Merge branch 'main' into cut-release-v0.26.6
41
docs/kcl/arcTo.md
Normal file
@ -7,6 +7,7 @@ layout: manual
|
|||||||
## Table of Contents
|
## Table of Contents
|
||||||
|
|
||||||
* [Types](kcl/types)
|
* [Types](kcl/types)
|
||||||
|
* [Modules](kcl/modules)
|
||||||
* [Known Issues](kcl/KNOWN-ISSUES)
|
* [Known Issues](kcl/KNOWN-ISSUES)
|
||||||
* [`abs`](kcl/abs)
|
* [`abs`](kcl/abs)
|
||||||
* [`acos`](kcl/acos)
|
* [`acos`](kcl/acos)
|
||||||
@ -19,6 +20,7 @@ layout: manual
|
|||||||
* [`angledLineToX`](kcl/angledLineToX)
|
* [`angledLineToX`](kcl/angledLineToX)
|
||||||
* [`angledLineToY`](kcl/angledLineToY)
|
* [`angledLineToY`](kcl/angledLineToY)
|
||||||
* [`arc`](kcl/arc)
|
* [`arc`](kcl/arc)
|
||||||
|
* [`arcTo`](kcl/arcTo)
|
||||||
* [`asin`](kcl/asin)
|
* [`asin`](kcl/asin)
|
||||||
* [`assert`](kcl/assert)
|
* [`assert`](kcl/assert)
|
||||||
* [`assertEqual`](kcl/assertEqual)
|
* [`assertEqual`](kcl/assertEqual)
|
||||||
|
|||||||
@ -9,7 +9,7 @@ Offset a plane by a distance along its normal.
|
|||||||
For example, if you offset the 'XZ' plane by 10, the new plane will be parallel to the 'XZ' plane and 10 units away from it.
|
For example, if you offset the 'XZ' plane by 10, the new plane will be parallel to the 'XZ' plane and 10 units away from it.
|
||||||
|
|
||||||
```js
|
```js
|
||||||
offsetPlane(std_plane: StandardPlane, offset: number) -> PlaneData
|
offsetPlane(std_plane: StandardPlane, offset: number) -> Plane
|
||||||
```
|
```
|
||||||
|
|
||||||
|
|
||||||
@ -22,7 +22,7 @@ offsetPlane(std_plane: StandardPlane, offset: number) -> PlaneData
|
|||||||
|
|
||||||
### Returns
|
### Returns
|
||||||
|
|
||||||
[`PlaneData`](/docs/kcl/types/PlaneData) - Data for a plane.
|
[`Plane`](/docs/kcl/types/Plane) - A plane.
|
||||||
|
|
||||||
|
|
||||||
### Examples
|
### Examples
|
||||||
|
|||||||
@ -36,15 +36,15 @@ fn add = (a, b) => {
|
|||||||
|
|
||||||
// This function adds an array of numbers.
|
// This function adds an array of numbers.
|
||||||
// It uses the `reduce` function, to call the `add` function on every
|
// It uses the `reduce` function, to call the `add` function on every
|
||||||
// element of the `array` parameter. The starting value is 0.
|
// element of the `arr` parameter. The starting value is 0.
|
||||||
fn sum = (array) => {
|
fn sum = (arr) => {
|
||||||
return reduce(array, 0, add)
|
return reduce(arr, 0, add)
|
||||||
}
|
}
|
||||||
|
|
||||||
/* The above is basically like this pseudo-code:
|
/* The above is basically like this pseudo-code:
|
||||||
fn sum(array):
|
fn sum(arr):
|
||||||
let sumSoFar = 0
|
let sumSoFar = 0
|
||||||
for i in array:
|
for i in arr:
|
||||||
sumSoFar = add(sumSoFar, i)
|
sumSoFar = add(sumSoFar, i)
|
||||||
return sumSoFar */
|
return sumSoFar */
|
||||||
|
|
||||||
@ -60,8 +60,8 @@ assertEqual(sum([1, 2, 3]), 6, 0.00001, "1 + 2 + 3 summed is 6")
|
|||||||
// This example works just like the previous example above, but it uses
|
// This example works just like the previous example above, but it uses
|
||||||
// an anonymous `add` function as its parameter, instead of declaring a
|
// an anonymous `add` function as its parameter, instead of declaring a
|
||||||
// named function outside.
|
// named function outside.
|
||||||
array = [1, 2, 3]
|
arr = [1, 2, 3]
|
||||||
sum = reduce(array, 0, (i, result_so_far) => {
|
sum = reduce(arr, 0, (i, result_so_far) => {
|
||||||
return i + result_so_far
|
return i + result_so_far
|
||||||
})
|
})
|
||||||
|
|
||||||
|
|||||||
4632
docs/kcl/std.json
22
docs/kcl/types/ArcToData.md
Normal file
@ -0,0 +1,22 @@
|
|||||||
|
---
|
||||||
|
title: "ArcToData"
|
||||||
|
excerpt: "Data to draw a three point arc (arcTo)."
|
||||||
|
layout: manual
|
||||||
|
---
|
||||||
|
|
||||||
|
Data to draw a three point arc (arcTo).
|
||||||
|
|
||||||
|
**Type:** `object`
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
## Properties
|
||||||
|
|
||||||
|
| Property | Type | Description | Required |
|
||||||
|
|----------|------|-------------|----------|
|
||||||
|
| `end` |`[number, number]`| End point of the arc. A point in 3D space | No |
|
||||||
|
| `interior` |`[number, number]`| Interior point of the arc. A point in 3D space | No |
|
||||||
|
|
||||||
|
|
||||||
@ -180,7 +180,7 @@ A plane.
|
|||||||
|
|
||||||
| Property | Type | Description | Required |
|
| Property | Type | Description | Required |
|
||||||
|----------|------|-------------|----------|
|
|----------|------|-------------|----------|
|
||||||
| `type` |enum: `Plane`| | No |
|
| `type` |enum: [`Plane`](/docs/kcl/types/Plane)| | No |
|
||||||
| `id` |`string`| The id of the plane. | No |
|
| `id` |`string`| The id of the plane. | No |
|
||||||
| `value` |[`PlaneType`](/docs/kcl/types/PlaneType)| Any KCL value. | No |
|
| `value` |[`PlaneType`](/docs/kcl/types/PlaneType)| Any KCL value. | No |
|
||||||
| `origin` |[`Point3d`](/docs/kcl/types/Point3d)| Origin of the plane. | No |
|
| `origin` |[`Point3d`](/docs/kcl/types/Point3d)| Origin of the plane. | No |
|
||||||
|
|||||||
27
docs/kcl/types/Plane.md
Normal file
@ -0,0 +1,27 @@
|
|||||||
|
---
|
||||||
|
title: "Plane"
|
||||||
|
excerpt: "A plane."
|
||||||
|
layout: manual
|
||||||
|
---
|
||||||
|
|
||||||
|
A plane.
|
||||||
|
|
||||||
|
**Type:** `object`
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
## Properties
|
||||||
|
|
||||||
|
| Property | Type | Description | Required |
|
||||||
|
|----------|------|-------------|----------|
|
||||||
|
| `id` |`string`| The id of the plane. | No |
|
||||||
|
| `value` |[`PlaneType`](/docs/kcl/types/PlaneType)| A plane. | No |
|
||||||
|
| `origin` |[`Point3d`](/docs/kcl/types/Point3d)| Origin of the plane. | No |
|
||||||
|
| `xAxis` |[`Point3d`](/docs/kcl/types/Point3d)| What should the plane’s X axis be? | No |
|
||||||
|
| `yAxis` |[`Point3d`](/docs/kcl/types/Point3d)| What should the plane’s Y axis be? | No |
|
||||||
|
| `zAxis` |[`Point3d`](/docs/kcl/types/Point3d)| The z-axis (normal). | No |
|
||||||
|
| `__meta` |`[` [`Metadata`](/docs/kcl/types/Metadata) `]`| | No |
|
||||||
|
|
||||||
|
|
||||||
@ -1,10 +1,10 @@
|
|||||||
---
|
---
|
||||||
title: "PlaneData"
|
title: "PlaneData"
|
||||||
excerpt: "Data for a plane."
|
excerpt: "Orientation data that can be used to construct a plane, not a plane in itself."
|
||||||
layout: manual
|
layout: manual
|
||||||
---
|
---
|
||||||
|
|
||||||
Data for a plane.
|
Orientation data that can be used to construct a plane, not a plane in itself.
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@ -22,6 +22,18 @@ Data for start sketch on. You can start a sketch on a plane or an solid.
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
----
|
||||||
|
Data for start sketch on. You can start a sketch on a plane or an solid.
|
||||||
|
|
||||||
|
[`Plane`](/docs/kcl/types/Plane)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
----
|
----
|
||||||
Data for start sketch on. You can start a sketch on a plane or an solid.
|
Data for start sketch on. You can start a sketch on a plane or an solid.
|
||||||
|
|
||||||
|
|||||||
@ -1135,3 +1135,189 @@ _test.describe('Deleting items from the file pane', () => {
|
|||||||
}
|
}
|
||||||
)
|
)
|
||||||
})
|
})
|
||||||
|
|
||||||
|
_test.describe(
|
||||||
|
'Undo and redo do not keep history when navigating between files',
|
||||||
|
() => {
|
||||||
|
_test(
|
||||||
|
`open a file, change something, open a different file, hitting undo should do nothing`,
|
||||||
|
{ tag: '@electron' },
|
||||||
|
async ({ browserName }, testInfo) => {
|
||||||
|
const { page } = await setupElectron({
|
||||||
|
testInfo,
|
||||||
|
folderSetupFn: async (dir) => {
|
||||||
|
const testDir = join(dir, 'testProject')
|
||||||
|
await fsp.mkdir(testDir, { recursive: true })
|
||||||
|
await fsp.copyFile(
|
||||||
|
executorInputPath('cylinder.kcl'),
|
||||||
|
join(testDir, 'main.kcl')
|
||||||
|
)
|
||||||
|
await fsp.copyFile(
|
||||||
|
executorInputPath('basic_fillet_cube_end.kcl'),
|
||||||
|
join(testDir, 'other.kcl')
|
||||||
|
)
|
||||||
|
},
|
||||||
|
})
|
||||||
|
const u = await getUtils(page)
|
||||||
|
await page.setViewportSize({ width: 1200, height: 500 })
|
||||||
|
page.on('console', console.log)
|
||||||
|
|
||||||
|
// Constants and locators
|
||||||
|
const projectCard = page.getByText('testProject')
|
||||||
|
const otherFile = page
|
||||||
|
.getByRole('listitem')
|
||||||
|
.filter({ has: page.getByRole('button', { name: 'other.kcl' }) })
|
||||||
|
|
||||||
|
await _test.step(
|
||||||
|
'Open project and make a change to the file',
|
||||||
|
async () => {
|
||||||
|
await projectCard.click()
|
||||||
|
await u.waitForPageLoad()
|
||||||
|
|
||||||
|
// Get the text in the code locator.
|
||||||
|
const originalText = await u.codeLocator.innerText()
|
||||||
|
// Click in the editor and add some new lines.
|
||||||
|
await u.codeLocator.click()
|
||||||
|
|
||||||
|
await page.keyboard.type(`sketch001 = startSketchOn('XY')
|
||||||
|
some other shit`)
|
||||||
|
|
||||||
|
// Ensure the content in the editor changed.
|
||||||
|
const newContent = await u.codeLocator.innerText()
|
||||||
|
|
||||||
|
expect(originalText !== newContent)
|
||||||
|
}
|
||||||
|
)
|
||||||
|
|
||||||
|
await _test.step('navigate to other.kcl', async () => {
|
||||||
|
await u.openFilePanel()
|
||||||
|
|
||||||
|
await otherFile.click()
|
||||||
|
await u.waitForPageLoad()
|
||||||
|
await u.openKclCodePanel()
|
||||||
|
await _expect(u.codeLocator).toContainText('getOppositeEdge(thing)')
|
||||||
|
})
|
||||||
|
|
||||||
|
await _test.step('hit undo', async () => {
|
||||||
|
// Get the original content of the file.
|
||||||
|
const originalText = await u.codeLocator.innerText()
|
||||||
|
// Now hit undo
|
||||||
|
await page.keyboard.down('ControlOrMeta')
|
||||||
|
await page.keyboard.press('KeyZ')
|
||||||
|
await page.keyboard.up('ControlOrMeta')
|
||||||
|
|
||||||
|
await page.waitForTimeout(100)
|
||||||
|
await expect(u.codeLocator).toContainText(originalText)
|
||||||
|
})
|
||||||
|
}
|
||||||
|
)
|
||||||
|
|
||||||
|
_test(
|
||||||
|
`open a file, change something, undo it, open a different file, hitting redo should do nothing`,
|
||||||
|
{ tag: '@electron' },
|
||||||
|
// Skip on windows i think the keybindings are different for redo.
|
||||||
|
async ({ browserName }, testInfo) => {
|
||||||
|
test.skip(process.platform === 'win32', 'Skip on windows')
|
||||||
|
const { page } = await setupElectron({
|
||||||
|
testInfo,
|
||||||
|
folderSetupFn: async (dir) => {
|
||||||
|
const testDir = join(dir, 'testProject')
|
||||||
|
await fsp.mkdir(testDir, { recursive: true })
|
||||||
|
await fsp.copyFile(
|
||||||
|
executorInputPath('cylinder.kcl'),
|
||||||
|
join(testDir, 'main.kcl')
|
||||||
|
)
|
||||||
|
await fsp.copyFile(
|
||||||
|
executorInputPath('basic_fillet_cube_end.kcl'),
|
||||||
|
join(testDir, 'other.kcl')
|
||||||
|
)
|
||||||
|
},
|
||||||
|
})
|
||||||
|
const u = await getUtils(page)
|
||||||
|
await page.setViewportSize({ width: 1200, height: 500 })
|
||||||
|
page.on('console', console.log)
|
||||||
|
|
||||||
|
// Constants and locators
|
||||||
|
const projectCard = page.getByText('testProject')
|
||||||
|
const otherFile = page
|
||||||
|
.getByRole('listitem')
|
||||||
|
.filter({ has: page.getByRole('button', { name: 'other.kcl' }) })
|
||||||
|
|
||||||
|
const badContent = 'this shit'
|
||||||
|
await _test.step(
|
||||||
|
'Open project and make a change to the file',
|
||||||
|
async () => {
|
||||||
|
await projectCard.click()
|
||||||
|
await u.waitForPageLoad()
|
||||||
|
|
||||||
|
// Get the text in the code locator.
|
||||||
|
const originalText = await u.codeLocator.innerText()
|
||||||
|
// Click in the editor and add some new lines.
|
||||||
|
await u.codeLocator.click()
|
||||||
|
|
||||||
|
await page.keyboard.type(badContent)
|
||||||
|
|
||||||
|
// Ensure the content in the editor changed.
|
||||||
|
const newContent = await u.codeLocator.innerText()
|
||||||
|
|
||||||
|
expect(originalText !== newContent)
|
||||||
|
|
||||||
|
// Now hit undo
|
||||||
|
await page.keyboard.down('ControlOrMeta')
|
||||||
|
await page.keyboard.press('KeyZ')
|
||||||
|
await page.keyboard.up('ControlOrMeta')
|
||||||
|
|
||||||
|
await page.waitForTimeout(100)
|
||||||
|
await expect(u.codeLocator).toContainText(originalText)
|
||||||
|
await expect(u.codeLocator).not.toContainText(badContent)
|
||||||
|
|
||||||
|
// Hit redo.
|
||||||
|
await page.keyboard.down('Shift')
|
||||||
|
await page.keyboard.down('ControlOrMeta')
|
||||||
|
await page.keyboard.press('KeyZ')
|
||||||
|
await page.keyboard.up('ControlOrMeta')
|
||||||
|
await page.keyboard.up('Shift')
|
||||||
|
|
||||||
|
await page.waitForTimeout(100)
|
||||||
|
await expect(u.codeLocator).toContainText(originalText)
|
||||||
|
await expect(u.codeLocator).toContainText(badContent)
|
||||||
|
|
||||||
|
// Now hit undo
|
||||||
|
await page.keyboard.down('ControlOrMeta')
|
||||||
|
await page.keyboard.press('KeyZ')
|
||||||
|
await page.keyboard.up('ControlOrMeta')
|
||||||
|
|
||||||
|
await page.waitForTimeout(100)
|
||||||
|
await expect(u.codeLocator).toContainText(originalText)
|
||||||
|
await expect(u.codeLocator).not.toContainText(badContent)
|
||||||
|
}
|
||||||
|
)
|
||||||
|
|
||||||
|
await _test.step('navigate to other.kcl', async () => {
|
||||||
|
await u.openFilePanel()
|
||||||
|
|
||||||
|
await otherFile.click()
|
||||||
|
await u.waitForPageLoad()
|
||||||
|
await u.openKclCodePanel()
|
||||||
|
await _expect(u.codeLocator).toContainText('getOppositeEdge(thing)')
|
||||||
|
await expect(u.codeLocator).not.toContainText(badContent)
|
||||||
|
})
|
||||||
|
|
||||||
|
await _test.step('hit redo', async () => {
|
||||||
|
// Get the original content of the file.
|
||||||
|
const originalText = await u.codeLocator.innerText()
|
||||||
|
// Now hit redo
|
||||||
|
await page.keyboard.down('Shift')
|
||||||
|
await page.keyboard.down('ControlOrMeta')
|
||||||
|
await page.keyboard.press('KeyZ')
|
||||||
|
await page.keyboard.up('ControlOrMeta')
|
||||||
|
await page.keyboard.up('Shift')
|
||||||
|
|
||||||
|
await page.waitForTimeout(100)
|
||||||
|
await expect(u.codeLocator).toContainText(originalText)
|
||||||
|
await expect(u.codeLocator).not.toContainText(badContent)
|
||||||
|
})
|
||||||
|
}
|
||||||
|
)
|
||||||
|
}
|
||||||
|
)
|
||||||
|
|||||||
@ -1274,3 +1274,44 @@ test2.describe('Sketch mode should be toleratant to syntax errors', () => {
|
|||||||
}
|
}
|
||||||
)
|
)
|
||||||
})
|
})
|
||||||
|
|
||||||
|
test2.describe(`Sketching with offset planes`, () => {
|
||||||
|
test2(
|
||||||
|
`Can select an offset plane to sketch on`,
|
||||||
|
async ({ app, scene, toolbar, editor }) => {
|
||||||
|
// We seed the scene with a single offset plane
|
||||||
|
await app.initialise(`offsetPlane001 = offsetPlane("XY", 10)`)
|
||||||
|
|
||||||
|
const [planeClick, planeHover] = scene.makeMouseHelpers(650, 200)
|
||||||
|
|
||||||
|
await test2.step(`Start sketching on the offset plane`, async () => {
|
||||||
|
await toolbar.startSketchPlaneSelection()
|
||||||
|
|
||||||
|
await test2.step(`Hovering should highlight code`, async () => {
|
||||||
|
await planeHover()
|
||||||
|
await editor.expectState({
|
||||||
|
activeLines: [`offsetPlane001=offsetPlane("XY",10)`],
|
||||||
|
diagnostics: [],
|
||||||
|
highlightedCode: 'offsetPlane("XY", 10)',
|
||||||
|
})
|
||||||
|
})
|
||||||
|
|
||||||
|
await test2.step(
|
||||||
|
`Clicking should select the plane and enter sketch mode`,
|
||||||
|
async () => {
|
||||||
|
await planeClick()
|
||||||
|
// Have to wait for engine-side animation to finish
|
||||||
|
await app.page.waitForTimeout(600)
|
||||||
|
await expect2(toolbar.lineBtn).toBeEnabled()
|
||||||
|
await editor.expectEditor.toContain('startSketchOn(offsetPlane001)')
|
||||||
|
await editor.expectState({
|
||||||
|
activeLines: [`offsetPlane001=offsetPlane("XY",10)`],
|
||||||
|
diagnostics: [],
|
||||||
|
highlightedCode: '',
|
||||||
|
})
|
||||||
|
}
|
||||||
|
)
|
||||||
|
})
|
||||||
|
}
|
||||||
|
)
|
||||||
|
})
|
||||||
|
|||||||
|
Before Width: | Height: | Size: 47 KiB After Width: | Height: | Size: 47 KiB |
|
Before Width: | Height: | Size: 65 KiB After Width: | Height: | Size: 65 KiB |
@ -63,6 +63,7 @@ import {
|
|||||||
import {
|
import {
|
||||||
moveValueIntoNewVariablePath,
|
moveValueIntoNewVariablePath,
|
||||||
sketchOnExtrudedFace,
|
sketchOnExtrudedFace,
|
||||||
|
sketchOnOffsetPlane,
|
||||||
startSketchOnDefault,
|
startSketchOnDefault,
|
||||||
} from 'lang/modifyAst'
|
} from 'lang/modifyAst'
|
||||||
import { Program, parse, recast } from 'lang/wasm'
|
import { Program, parse, recast } from 'lang/wasm'
|
||||||
@ -636,13 +637,16 @@ export const ModelingMachineProvider = ({
|
|||||||
),
|
),
|
||||||
'animate-to-face': fromPromise(async ({ input }) => {
|
'animate-to-face': fromPromise(async ({ input }) => {
|
||||||
if (!input) return undefined
|
if (!input) return undefined
|
||||||
if (input.type === 'extrudeFace') {
|
if (input.type === 'extrudeFace' || input.type === 'offsetPlane') {
|
||||||
const sketched = sketchOnExtrudedFace(
|
const sketched =
|
||||||
kclManager.ast,
|
input.type === 'extrudeFace'
|
||||||
input.sketchPathToNode,
|
? sketchOnExtrudedFace(
|
||||||
input.extrudePathToNode,
|
kclManager.ast,
|
||||||
input.faceInfo
|
input.sketchPathToNode,
|
||||||
)
|
input.extrudePathToNode,
|
||||||
|
input.faceInfo
|
||||||
|
)
|
||||||
|
: sketchOnOffsetPlane(kclManager.ast, input.pathToNode)
|
||||||
if (err(sketched)) {
|
if (err(sketched)) {
|
||||||
const sketchedError = new Error(
|
const sketchedError = new Error(
|
||||||
'Incompatible face, please try another'
|
'Incompatible face, please try another'
|
||||||
@ -654,10 +658,9 @@ export const ModelingMachineProvider = ({
|
|||||||
|
|
||||||
await kclManager.executeAstMock(modifiedAst)
|
await kclManager.executeAstMock(modifiedAst)
|
||||||
|
|
||||||
await letEngineAnimateAndSyncCamAfter(
|
const id =
|
||||||
engineCommandManager,
|
input.type === 'extrudeFace' ? input.faceId : input.planeId
|
||||||
input.faceId
|
await letEngineAnimateAndSyncCamAfter(engineCommandManager, id)
|
||||||
)
|
|
||||||
sceneInfra.camControls.syncDirection = 'clientToEngine'
|
sceneInfra.camControls.syncDirection = 'clientToEngine'
|
||||||
return {
|
return {
|
||||||
sketchPathToNode: pathToNewSketchNode,
|
sketchPathToNode: pathToNewSketchNode,
|
||||||
|
|||||||
@ -43,6 +43,7 @@ import {
|
|||||||
completionKeymap,
|
completionKeymap,
|
||||||
} from '@codemirror/autocomplete'
|
} from '@codemirror/autocomplete'
|
||||||
import CodeEditor from './CodeEditor'
|
import CodeEditor from './CodeEditor'
|
||||||
|
import { codeManagerHistoryCompartment } from 'lang/codeManager'
|
||||||
|
|
||||||
export const editorShortcutMeta = {
|
export const editorShortcutMeta = {
|
||||||
formatCode: {
|
formatCode: {
|
||||||
@ -89,7 +90,7 @@ export const KclEditorPane = () => {
|
|||||||
cursorBlinkRate: cursorBlinking.current ? 1200 : 0,
|
cursorBlinkRate: cursorBlinking.current ? 1200 : 0,
|
||||||
}),
|
}),
|
||||||
lineHighlightField,
|
lineHighlightField,
|
||||||
history(),
|
codeManagerHistoryCompartment.of(history()),
|
||||||
closeBrackets(),
|
closeBrackets(),
|
||||||
codeFolding(),
|
codeFolding(),
|
||||||
keymap.of([
|
keymap.of([
|
||||||
@ -121,7 +122,6 @@ export const KclEditorPane = () => {
|
|||||||
lineNumbers(),
|
lineNumbers(),
|
||||||
highlightActiveLineGutter(),
|
highlightActiveLineGutter(),
|
||||||
highlightSpecialChars(),
|
highlightSpecialChars(),
|
||||||
history(),
|
|
||||||
foldGutter(),
|
foldGutter(),
|
||||||
EditorState.allowMultipleSelections.of(true),
|
EditorState.allowMultipleSelections.of(true),
|
||||||
indentOnInput(),
|
indentOnInput(),
|
||||||
|
|||||||
@ -88,6 +88,10 @@ export function useEngineConnectionSubscriptions() {
|
|||||||
? [codeRef.range]
|
? [codeRef.range]
|
||||||
: [codeRef.range, consumedCodeRef.range]
|
: [codeRef.range, consumedCodeRef.range]
|
||||||
)
|
)
|
||||||
|
} else if (artifact?.type === 'plane') {
|
||||||
|
const codeRef = artifact.codeRef
|
||||||
|
if (err(codeRef)) return
|
||||||
|
editorManager.setHighlightRange([codeRef.range])
|
||||||
} else {
|
} else {
|
||||||
editorManager.setHighlightRange([[0, 0]])
|
editorManager.setHighlightRange([[0, 0]])
|
||||||
}
|
}
|
||||||
@ -186,8 +190,42 @@ export function useEngineConnectionSubscriptions() {
|
|||||||
})
|
})
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
const artifact =
|
||||||
|
engineCommandManager.artifactGraph.get(planeOrFaceId)
|
||||||
|
|
||||||
|
if (artifact?.type === 'plane') {
|
||||||
|
const planeInfo = await getFaceDetails(planeOrFaceId)
|
||||||
|
sceneInfra.modelingSend({
|
||||||
|
type: 'Select default plane',
|
||||||
|
data: {
|
||||||
|
type: 'offsetPlane',
|
||||||
|
zAxis: [
|
||||||
|
planeInfo.z_axis.x,
|
||||||
|
planeInfo.z_axis.y,
|
||||||
|
planeInfo.z_axis.z,
|
||||||
|
],
|
||||||
|
yAxis: [
|
||||||
|
planeInfo.y_axis.x,
|
||||||
|
planeInfo.y_axis.y,
|
||||||
|
planeInfo.y_axis.z,
|
||||||
|
],
|
||||||
|
position: [
|
||||||
|
planeInfo.origin.x,
|
||||||
|
planeInfo.origin.y,
|
||||||
|
planeInfo.origin.z,
|
||||||
|
].map((num) => num / sceneInfra._baseUnitMultiplier) as [
|
||||||
|
number,
|
||||||
|
number,
|
||||||
|
number
|
||||||
|
],
|
||||||
|
planeId: planeOrFaceId,
|
||||||
|
pathToNode: artifact.codeRef.pathToNode,
|
||||||
|
},
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
// Artifact is likely an extrusion face
|
||||||
const faceId = planeOrFaceId
|
const faceId = planeOrFaceId
|
||||||
const artifact = engineCommandManager.artifactGraph.get(faceId)
|
|
||||||
const extrusion = getSweepFromSuspectedSweepSurface(
|
const extrusion = getSweepFromSuspectedSweepSurface(
|
||||||
faceId,
|
faceId,
|
||||||
engineCommandManager.artifactGraph
|
engineCommandManager.artifactGraph
|
||||||
|
|||||||
@ -6,14 +6,17 @@ import { isDesktop } from 'lib/isDesktop'
|
|||||||
import toast from 'react-hot-toast'
|
import toast from 'react-hot-toast'
|
||||||
import { editorManager } from 'lib/singletons'
|
import { editorManager } from 'lib/singletons'
|
||||||
import { Annotation, Transaction } from '@codemirror/state'
|
import { Annotation, Transaction } from '@codemirror/state'
|
||||||
import { KeyBinding } from '@codemirror/view'
|
import { EditorView, KeyBinding } from '@codemirror/view'
|
||||||
import { recast, Program } from 'lang/wasm'
|
import { recast, Program } from 'lang/wasm'
|
||||||
import { err } from 'lib/trap'
|
import { err } from 'lib/trap'
|
||||||
|
import { Compartment } from '@codemirror/state'
|
||||||
|
import { history } from '@codemirror/commands'
|
||||||
|
|
||||||
const PERSIST_CODE_KEY = 'persistCode'
|
const PERSIST_CODE_KEY = 'persistCode'
|
||||||
|
|
||||||
const codeManagerUpdateAnnotation = Annotation.define<boolean>()
|
const codeManagerUpdateAnnotation = Annotation.define<boolean>()
|
||||||
export const codeManagerUpdateEvent = codeManagerUpdateAnnotation.of(true)
|
export const codeManagerUpdateEvent = codeManagerUpdateAnnotation.of(true)
|
||||||
|
export const codeManagerHistoryCompartment = new Compartment()
|
||||||
|
|
||||||
export default class CodeManager {
|
export default class CodeManager {
|
||||||
private _code: string = bracket
|
private _code: string = bracket
|
||||||
@ -90,9 +93,12 @@ export default class CodeManager {
|
|||||||
/**
|
/**
|
||||||
* Update the code in the editor.
|
* Update the code in the editor.
|
||||||
*/
|
*/
|
||||||
updateCodeEditor(code: string): void {
|
updateCodeEditor(code: string, clearHistory?: boolean): void {
|
||||||
this.code = code
|
this.code = code
|
||||||
if (editorManager.editorView) {
|
if (editorManager.editorView) {
|
||||||
|
if (clearHistory) {
|
||||||
|
clearCodeMirrorHistory(editorManager.editorView)
|
||||||
|
}
|
||||||
editorManager.editorView.dispatch({
|
editorManager.editorView.dispatch({
|
||||||
changes: {
|
changes: {
|
||||||
from: 0,
|
from: 0,
|
||||||
@ -101,7 +107,7 @@ export default class CodeManager {
|
|||||||
},
|
},
|
||||||
annotations: [
|
annotations: [
|
||||||
codeManagerUpdateEvent,
|
codeManagerUpdateEvent,
|
||||||
Transaction.addToHistory.of(true),
|
Transaction.addToHistory.of(!clearHistory),
|
||||||
],
|
],
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
@ -110,11 +116,11 @@ export default class CodeManager {
|
|||||||
/**
|
/**
|
||||||
* Update the code, state, and the code the code mirror editor sees.
|
* Update the code, state, and the code the code mirror editor sees.
|
||||||
*/
|
*/
|
||||||
updateCodeStateEditor(code: string): void {
|
updateCodeStateEditor(code: string, clearHistory?: boolean): void {
|
||||||
if (this._code !== code) {
|
if (this._code !== code) {
|
||||||
this.code = code
|
this.code = code
|
||||||
this.#updateState(code)
|
this.#updateState(code)
|
||||||
this.updateCodeEditor(code)
|
this.updateCodeEditor(code, clearHistory)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -167,3 +173,17 @@ function safeLSSetItem(key: string, value: string) {
|
|||||||
if (typeof window === 'undefined') return
|
if (typeof window === 'undefined') return
|
||||||
localStorage?.setItem(key, value)
|
localStorage?.setItem(key, value)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function clearCodeMirrorHistory(view: EditorView) {
|
||||||
|
// Clear history
|
||||||
|
view.dispatch({
|
||||||
|
effects: [codeManagerHistoryCompartment.reconfigure([])],
|
||||||
|
annotations: [codeManagerUpdateEvent],
|
||||||
|
})
|
||||||
|
|
||||||
|
// Add history back
|
||||||
|
view.dispatch({
|
||||||
|
effects: [codeManagerHistoryCompartment.reconfigure([history()])],
|
||||||
|
annotations: [codeManagerUpdateEvent],
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|||||||
@ -19,6 +19,7 @@ import {
|
|||||||
ProgramMemory,
|
ProgramMemory,
|
||||||
SourceRange,
|
SourceRange,
|
||||||
sketchFromKclValue,
|
sketchFromKclValue,
|
||||||
|
isPathToNodeNumber,
|
||||||
} from './wasm'
|
} from './wasm'
|
||||||
import {
|
import {
|
||||||
isNodeSafeToReplacePath,
|
isNodeSafeToReplacePath,
|
||||||
@ -526,6 +527,60 @@ export function sketchOnExtrudedFace(
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Modify the AST to create a new sketch using the variable declaration
|
||||||
|
* of an offset plane. The new sketch just has to come after the offset
|
||||||
|
* plane declaration.
|
||||||
|
*/
|
||||||
|
export function sketchOnOffsetPlane(
|
||||||
|
node: Node<Program>,
|
||||||
|
offsetPathToNode: PathToNode
|
||||||
|
) {
|
||||||
|
let _node = { ...node }
|
||||||
|
|
||||||
|
// Find the offset plane declaration
|
||||||
|
const offsetPlaneDeclarator = getNodeFromPath<VariableDeclarator>(
|
||||||
|
_node,
|
||||||
|
offsetPathToNode,
|
||||||
|
'VariableDeclarator',
|
||||||
|
true
|
||||||
|
)
|
||||||
|
if (err(offsetPlaneDeclarator)) return offsetPlaneDeclarator
|
||||||
|
const { node: offsetPlaneNode } = offsetPlaneDeclarator
|
||||||
|
const offsetPlaneName = offsetPlaneNode.id.name
|
||||||
|
|
||||||
|
// Create a new sketch declaration
|
||||||
|
const newSketchName = findUniqueName(
|
||||||
|
node,
|
||||||
|
KCL_DEFAULT_CONSTANT_PREFIXES.SKETCH
|
||||||
|
)
|
||||||
|
const newSketch = createVariableDeclaration(
|
||||||
|
newSketchName,
|
||||||
|
createCallExpressionStdLib('startSketchOn', [
|
||||||
|
createIdentifier(offsetPlaneName),
|
||||||
|
]),
|
||||||
|
undefined,
|
||||||
|
'const'
|
||||||
|
)
|
||||||
|
|
||||||
|
// Decide where to insert the new sketch declaration
|
||||||
|
const offsetIndex = offsetPathToNode[1][0]
|
||||||
|
|
||||||
|
if (!isPathToNodeNumber(offsetIndex)) {
|
||||||
|
return new Error('Expected offsetIndex to be a number')
|
||||||
|
}
|
||||||
|
// and insert it
|
||||||
|
_node.body.splice(offsetIndex + 1, 0, newSketch)
|
||||||
|
const newPathToNode = structuredClone(offsetPathToNode)
|
||||||
|
newPathToNode[1][0] = offsetIndex + 1
|
||||||
|
|
||||||
|
// Return the modified AST and the path to the new sketch declaration
|
||||||
|
return {
|
||||||
|
modifiedAst: _node,
|
||||||
|
pathToNode: newPathToNode,
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
export const getLastIndex = (pathToNode: PathToNode): number =>
|
export const getLastIndex = (pathToNode: PathToNode): number =>
|
||||||
splitPathAtLastIndex(pathToNode).index
|
splitPathAtLastIndex(pathToNode).index
|
||||||
|
|
||||||
|
|||||||
@ -98,12 +98,22 @@ sketch004 = startSketchOn(extrude003, seg02)
|
|||||||
|> close(%)
|
|> close(%)
|
||||||
extrude004 = extrude(3, sketch004)
|
extrude004 = extrude(3, sketch004)
|
||||||
`
|
`
|
||||||
|
const exampleCodeOffsetPlanes = `
|
||||||
|
offsetPlane001 = offsetPlane("XY", 20)
|
||||||
|
offsetPlane002 = offsetPlane("XZ", -50)
|
||||||
|
offsetPlane003 = offsetPlane("YZ", 10)
|
||||||
|
|
||||||
|
sketch002 = startSketchOn(offsetPlane001)
|
||||||
|
|> startProfileAt([0, 0], %)
|
||||||
|
|> line([6.78, 15.01], %)
|
||||||
|
`
|
||||||
|
|
||||||
// add more code snippets here and use `getCommands` to get the orderedCommands and responseMap for more tests
|
// add more code snippets here and use `getCommands` to get the orderedCommands and responseMap for more tests
|
||||||
const codeToWriteCacheFor = {
|
const codeToWriteCacheFor = {
|
||||||
exampleCode1,
|
exampleCode1,
|
||||||
sketchOnFaceOnFaceEtc,
|
sketchOnFaceOnFaceEtc,
|
||||||
exampleCodeNo3D,
|
exampleCodeNo3D,
|
||||||
|
exampleCodeOffsetPlanes,
|
||||||
} as const
|
} as const
|
||||||
|
|
||||||
type CodeKey = keyof typeof codeToWriteCacheFor
|
type CodeKey = keyof typeof codeToWriteCacheFor
|
||||||
@ -165,6 +175,52 @@ afterAll(() => {
|
|||||||
})
|
})
|
||||||
|
|
||||||
describe('testing createArtifactGraph', () => {
|
describe('testing createArtifactGraph', () => {
|
||||||
|
describe('code with offset planes and a sketch:', () => {
|
||||||
|
let ast: Program
|
||||||
|
let theMap: ReturnType<typeof createArtifactGraph>
|
||||||
|
|
||||||
|
it('setup', () => {
|
||||||
|
// putting this logic in here because describe blocks runs before beforeAll has finished
|
||||||
|
const {
|
||||||
|
orderedCommands,
|
||||||
|
responseMap,
|
||||||
|
ast: _ast,
|
||||||
|
} = getCommands('exampleCodeOffsetPlanes')
|
||||||
|
ast = _ast
|
||||||
|
theMap = createArtifactGraph({ orderedCommands, responseMap, ast })
|
||||||
|
})
|
||||||
|
|
||||||
|
it(`there should be one sketch`, () => {
|
||||||
|
const sketches = [...filterArtifacts({ types: ['path'] }, theMap)].map(
|
||||||
|
(path) => expandPath(path[1], theMap)
|
||||||
|
)
|
||||||
|
expect(sketches).toHaveLength(1)
|
||||||
|
sketches.forEach((path) => {
|
||||||
|
if (err(path)) throw path
|
||||||
|
expect(path.type).toBe('path')
|
||||||
|
})
|
||||||
|
})
|
||||||
|
|
||||||
|
it(`there should be three offsetPlanes`, () => {
|
||||||
|
const offsetPlanes = [
|
||||||
|
...filterArtifacts({ types: ['plane'] }, theMap),
|
||||||
|
].map((plane) => expandPlane(plane[1], theMap))
|
||||||
|
expect(offsetPlanes).toHaveLength(3)
|
||||||
|
offsetPlanes.forEach((path) => {
|
||||||
|
expect(path.type).toBe('plane')
|
||||||
|
})
|
||||||
|
})
|
||||||
|
|
||||||
|
it(`Only one offset plane should have a path`, () => {
|
||||||
|
const offsetPlanes = [
|
||||||
|
...filterArtifacts({ types: ['plane'] }, theMap),
|
||||||
|
].map((plane) => expandPlane(plane[1], theMap))
|
||||||
|
const offsetPlaneWithPaths = offsetPlanes.filter(
|
||||||
|
(plane) => plane.paths.length
|
||||||
|
)
|
||||||
|
expect(offsetPlaneWithPaths).toHaveLength(1)
|
||||||
|
})
|
||||||
|
})
|
||||||
describe('code with an extrusion, fillet and sketch of face:', () => {
|
describe('code with an extrusion, fillet and sketch of face:', () => {
|
||||||
let ast: Program
|
let ast: Program
|
||||||
let theMap: ReturnType<typeof createArtifactGraph>
|
let theMap: ReturnType<typeof createArtifactGraph>
|
||||||
|
|||||||
@ -249,7 +249,20 @@ export function getArtifactsToUpdate({
|
|||||||
const cmd = command.cmd
|
const cmd = command.cmd
|
||||||
const returnArr: ReturnType<typeof getArtifactsToUpdate> = []
|
const returnArr: ReturnType<typeof getArtifactsToUpdate> = []
|
||||||
if (!response) return returnArr
|
if (!response) return returnArr
|
||||||
if (cmd.type === 'enable_sketch_mode') {
|
if (cmd.type === 'make_plane' && range[1] !== 0) {
|
||||||
|
// If we're calling `make_plane` and the code range doesn't end at `0`
|
||||||
|
// it's not a default plane, but a custom one from the offsetPlane standard library function
|
||||||
|
return [
|
||||||
|
{
|
||||||
|
id,
|
||||||
|
artifact: {
|
||||||
|
type: 'plane',
|
||||||
|
pathIds: [],
|
||||||
|
codeRef: { range, pathToNode },
|
||||||
|
},
|
||||||
|
},
|
||||||
|
]
|
||||||
|
} else if (cmd.type === 'enable_sketch_mode') {
|
||||||
const plane = getArtifact(currentPlaneId)
|
const plane = getArtifact(currentPlaneId)
|
||||||
const pathIds = plane?.type === 'plane' ? plane?.pathIds : []
|
const pathIds = plane?.type === 'plane' ? plane?.pathIds : []
|
||||||
const codeRef =
|
const codeRef =
|
||||||
|
|||||||
@ -144,6 +144,12 @@ export const parse = (code: string | Error): Node<Program> | Error => {
|
|||||||
|
|
||||||
export type PathToNode = [string | number, string][]
|
export type PathToNode = [string | number, string][]
|
||||||
|
|
||||||
|
export const isPathToNodeNumber = (
|
||||||
|
pathToNode: string | number
|
||||||
|
): pathToNode is number => {
|
||||||
|
return typeof pathToNode === 'number'
|
||||||
|
}
|
||||||
|
|
||||||
export interface ExecState {
|
export interface ExecState {
|
||||||
memory: ProgramMemory
|
memory: ProgramMemory
|
||||||
idGenerator: IdGenerator
|
idGenerator: IdGenerator
|
||||||
|
|||||||
@ -124,7 +124,9 @@ export const fileLoader: LoaderFunction = async (
|
|||||||
// We explicitly do not write to the file here since we are loading from
|
// We explicitly do not write to the file here since we are loading from
|
||||||
// the file system and not the editor.
|
// the file system and not the editor.
|
||||||
codeManager.updateCurrentFilePath(currentFilePath)
|
codeManager.updateCurrentFilePath(currentFilePath)
|
||||||
codeManager.updateCodeStateEditor(code)
|
// We pass true on the end here to clear the code editor history.
|
||||||
|
// This way undo and redo are not super weird when opening new files.
|
||||||
|
codeManager.updateCodeStateEditor(code, true)
|
||||||
}
|
}
|
||||||
|
|
||||||
// Set the file system manager to the project path
|
// Set the file system manager to the project path
|
||||||
|
|||||||
@ -159,6 +159,15 @@ export type DefaultPlane = {
|
|||||||
yAxis: [number, number, number]
|
yAxis: [number, number, number]
|
||||||
}
|
}
|
||||||
|
|
||||||
|
export type OffsetPlane = {
|
||||||
|
type: 'offsetPlane'
|
||||||
|
position: [number, number, number]
|
||||||
|
planeId: string
|
||||||
|
pathToNode: PathToNode
|
||||||
|
zAxis: [number, number, number]
|
||||||
|
yAxis: [number, number, number]
|
||||||
|
}
|
||||||
|
|
||||||
export type SegmentOverlayPayload =
|
export type SegmentOverlayPayload =
|
||||||
| {
|
| {
|
||||||
type: 'set-one'
|
type: 'set-one'
|
||||||
@ -198,7 +207,7 @@ export type ModelingMachineEvent =
|
|||||||
| { type: 'Sketch On Face' }
|
| { type: 'Sketch On Face' }
|
||||||
| {
|
| {
|
||||||
type: 'Select default plane'
|
type: 'Select default plane'
|
||||||
data: DefaultPlane | ExtrudeFacePlane
|
data: DefaultPlane | ExtrudeFacePlane | OffsetPlane
|
||||||
}
|
}
|
||||||
| {
|
| {
|
||||||
type: 'Set selection'
|
type: 'Set selection'
|
||||||
@ -1394,7 +1403,7 @@ export const modelingMachine = setup({
|
|||||||
}
|
}
|
||||||
),
|
),
|
||||||
'animate-to-face': fromPromise(
|
'animate-to-face': fromPromise(
|
||||||
async (_: { input?: ExtrudeFacePlane | DefaultPlane }) => {
|
async (_: { input?: ExtrudeFacePlane | DefaultPlane | OffsetPlane }) => {
|
||||||
return {} as
|
return {} as
|
||||||
| undefined
|
| undefined
|
||||||
| {
|
| {
|
||||||
|
|||||||
3
src/wasm-lib/Cargo.lock
generated
@ -1589,6 +1589,8 @@ dependencies = [
|
|||||||
"console",
|
"console",
|
||||||
"lazy_static",
|
"lazy_static",
|
||||||
"linked-hash-map",
|
"linked-hash-map",
|
||||||
|
"pest",
|
||||||
|
"pest_derive",
|
||||||
"regex",
|
"regex",
|
||||||
"serde",
|
"serde",
|
||||||
"similar",
|
"similar",
|
||||||
@ -1689,6 +1691,7 @@ dependencies = [
|
|||||||
"databake",
|
"databake",
|
||||||
"derive-docs",
|
"derive-docs",
|
||||||
"expectorate",
|
"expectorate",
|
||||||
|
"fnv",
|
||||||
"form_urlencoded",
|
"form_urlencoded",
|
||||||
"futures",
|
"futures",
|
||||||
"git_rev",
|
"git_rev",
|
||||||
|
|||||||
@ -9,21 +9,16 @@ new-test name:
|
|||||||
lint:
|
lint:
|
||||||
cargo clippy --workspace --all-targets -- -D warnings
|
cargo clippy --workspace --all-targets -- -D warnings
|
||||||
|
|
||||||
|
# Generate the stdlib image artifacts
|
||||||
|
# Then run the stdlib docs generation
|
||||||
redo-kcl-stdlib-docs:
|
redo-kcl-stdlib-docs:
|
||||||
|
TWENTY_TWENTY=overwrite {{cnr}} -p kcl-lib kcl_test_example
|
||||||
EXPECTORATE=overwrite {{cnr}} -p kcl-lib docs::gen_std_tests::test_generate_stdlib
|
EXPECTORATE=overwrite {{cnr}} -p kcl-lib docs::gen_std_tests::test_generate_stdlib
|
||||||
|
|
||||||
# Create a new KCL deterministic simulation test case.
|
# Create a new KCL deterministic simulation test case.
|
||||||
new-sim-test test_name kcl_program render_to_png="true":
|
new-sim-test test_name render_to_png="true":
|
||||||
# Each test file gets its own directory. This will contain the KCL program, and its
|
|
||||||
# snapshotted artifacts (e.g. serialized tokens, serialized ASTs, program memory,
|
|
||||||
# PNG snapshots, etc).
|
|
||||||
mkdir kcl/tests/{{test_name}}
|
|
||||||
echo "{{kcl_program}}" > kcl/tests/{{test_name}}/input.kcl
|
|
||||||
# Add the various tests for this new test case.
|
|
||||||
cat kcl/tests/simtest.tmpl | sed "s/TEST_NAME_HERE/{{test_name}}/" | sed "s/RENDER_TO_PNG/{{render_to_png}}/" >> kcl/src/simulation_tests.rs
|
|
||||||
# Run all the tests for the first time, in the right order.
|
|
||||||
{{cita}} -p kcl-lib -- tests::{{test_name}}::tokenize
|
{{cita}} -p kcl-lib -- tests::{{test_name}}::tokenize
|
||||||
{{cita}} -p kcl-lib -- tests::{{test_name}}::parse
|
{{cita}} -p kcl-lib -- tests::{{test_name}}::parse
|
||||||
{{cita}} -p kcl-lib -- tests::{{test_name}}::unparse
|
{{cita}} -p kcl-lib -- tests::{{test_name}}::unparse
|
||||||
TWENTY_TWENTY=overwrite {{cita}} -p kcl-lib -- tests::{{test_name}}::kcl_test_execute
|
TWENTY_TWENTY=overwrite {{cita}} -p kcl-lib -- tests::{{test_name}}::kcl_test_execute
|
||||||
|
|
||||||
|
|||||||
@ -21,6 +21,7 @@ convert_case = "0.6.0"
|
|||||||
dashmap = "6.1.0"
|
dashmap = "6.1.0"
|
||||||
databake = { version = "0.1.8", features = ["derive"] }
|
databake = { version = "0.1.8", features = ["derive"] }
|
||||||
derive-docs = { version = "0.1.29", path = "../derive-docs" }
|
derive-docs = { version = "0.1.29", path = "../derive-docs" }
|
||||||
|
fnv = "1.0.7"
|
||||||
form_urlencoded = "1.2.1"
|
form_urlencoded = "1.2.1"
|
||||||
futures = { version = "0.3.31" }
|
futures = { version = "0.3.31" }
|
||||||
git_rev = "0.1.0"
|
git_rev = "0.1.0"
|
||||||
@ -86,7 +87,7 @@ expectorate = "1.1.0"
|
|||||||
handlebars = "6.2.0"
|
handlebars = "6.2.0"
|
||||||
iai = "0.1"
|
iai = "0.1"
|
||||||
image = { version = "0.25.5", default-features = false, features = ["png"] }
|
image = { version = "0.25.5", default-features = false, features = ["png"] }
|
||||||
insta = { version = "1.41.1", features = ["json", "filters"] }
|
insta = { version = "1.41.1", features = ["json", "filters", "redactions"] }
|
||||||
itertools = "0.13.0"
|
itertools = "0.13.0"
|
||||||
pretty_assertions = "1.4.1"
|
pretty_assertions = "1.4.1"
|
||||||
tokio = { version = "1.40.0", features = ["rt-multi-thread", "macros", "time"] }
|
tokio = { version = "1.40.0", features = ["rt-multi-thread", "macros", "time"] }
|
||||||
|
|||||||
@ -39,5 +39,5 @@ const KITT_PROGRAM: &str = include_str!("../../tests/executor/inputs/kittycad_sv
|
|||||||
const PIPES_PROGRAM: &str = include_str!("../../tests/executor/inputs/pipes_on_pipes.kcl");
|
const PIPES_PROGRAM: &str = include_str!("../../tests/executor/inputs/pipes_on_pipes.kcl");
|
||||||
const CUBE_PROGRAM: &str = include_str!("../../tests/executor/inputs/cube.kcl");
|
const CUBE_PROGRAM: &str = include_str!("../../tests/executor/inputs/cube.kcl");
|
||||||
const MATH_PROGRAM: &str = include_str!("../../tests/executor/inputs/math.kcl");
|
const MATH_PROGRAM: &str = include_str!("../../tests/executor/inputs/math.kcl");
|
||||||
const MIKE_STRESS_TEST_PROGRAM: &str = include_str!("../../tests/executor/inputs/mike_stress_test.kcl");
|
const MIKE_STRESS_TEST_PROGRAM: &str = include_str!("../tests/mike_stress_test/input.kcl");
|
||||||
const LSYSTEM_KOCH_SNOWFLAKE_PROGRAM: &str = include_str!("../../tests/executor/inputs/lsystem.kcl");
|
const LSYSTEM_KOCH_SNOWFLAKE_PROGRAM: &str = include_str!("../../tests/executor/inputs/lsystem.kcl");
|
||||||
|
|||||||
@ -28,5 +28,5 @@ const KITT_PROGRAM: &str = include_str!("../../tests/executor/inputs/kittycad_sv
|
|||||||
const PIPES_PROGRAM: &str = include_str!("../../tests/executor/inputs/pipes_on_pipes.kcl");
|
const PIPES_PROGRAM: &str = include_str!("../../tests/executor/inputs/pipes_on_pipes.kcl");
|
||||||
const CUBE_PROGRAM: &str = include_str!("../../tests/executor/inputs/cube.kcl");
|
const CUBE_PROGRAM: &str = include_str!("../../tests/executor/inputs/cube.kcl");
|
||||||
const MATH_PROGRAM: &str = include_str!("../../tests/executor/inputs/math.kcl");
|
const MATH_PROGRAM: &str = include_str!("../../tests/executor/inputs/math.kcl");
|
||||||
const MIKE_STRESS_TEST_PROGRAM: &str = include_str!("../../tests/executor/inputs/mike_stress_test.kcl");
|
const MIKE_STRESS_TEST_PROGRAM: &str = include_str!("../tests/mike_stress_test/input.kcl");
|
||||||
const LSYSTEM_PROGRAM: &str = include_str!("../../tests/executor/inputs/lsystem.kcl");
|
const LSYSTEM_PROGRAM: &str = include_str!("../../tests/executor/inputs/lsystem.kcl");
|
||||||
|
|||||||
@ -62,6 +62,6 @@ const KITT_PROGRAM: &str = include_str!("../../tests/executor/inputs/kittycad_sv
|
|||||||
const PIPES_PROGRAM: &str = include_str!("../../tests/executor/inputs/pipes_on_pipes.kcl");
|
const PIPES_PROGRAM: &str = include_str!("../../tests/executor/inputs/pipes_on_pipes.kcl");
|
||||||
const CUBE_PROGRAM: &str = include_str!("../../tests/executor/inputs/cube.kcl");
|
const CUBE_PROGRAM: &str = include_str!("../../tests/executor/inputs/cube.kcl");
|
||||||
const MATH_PROGRAM: &str = include_str!("../../tests/executor/inputs/math.kcl");
|
const MATH_PROGRAM: &str = include_str!("../../tests/executor/inputs/math.kcl");
|
||||||
const MIKE_STRESS_TEST_PROGRAM: &str = include_str!("../../tests/executor/inputs/mike_stress_test.kcl");
|
const MIKE_STRESS_TEST_PROGRAM: &str = include_str!("../tests/mike_stress_test/input.kcl");
|
||||||
const GLOBAL_TAGS_FILE: &str = include_str!("../../tests/executor/inputs/global-tags.kcl");
|
const GLOBAL_TAGS_FILE: &str = include_str!("../../tests/executor/inputs/global-tags.kcl");
|
||||||
const LSYSTEM_PROGRAM: &str = include_str!("../../tests/executor/inputs/lsystem.kcl");
|
const LSYSTEM_PROGRAM: &str = include_str!("../../tests/executor/inputs/lsystem.kcl");
|
||||||
|
|||||||
20
src/wasm-lib/kcl/common.kcl
Normal file
@ -0,0 +1,20 @@
|
|||||||
|
// This file is used by the import docs.
|
||||||
|
|
||||||
|
export fn width = () => {
|
||||||
|
return 10
|
||||||
|
}
|
||||||
|
|
||||||
|
export fn height = () => {
|
||||||
|
return 10
|
||||||
|
}
|
||||||
|
|
||||||
|
export fn buildSketch = (plane, offset) => {
|
||||||
|
w = width()
|
||||||
|
h = height()
|
||||||
|
return startSketchOn(plane)
|
||||||
|
|> startProfileAt(offset, %)
|
||||||
|
|> line([w, 0], %)
|
||||||
|
|> line([0, h], %)
|
||||||
|
|> line([-w, 0], %)
|
||||||
|
|> close(%)
|
||||||
|
}
|
||||||
@ -7,6 +7,7 @@ layout: manual
|
|||||||
## Table of Contents
|
## Table of Contents
|
||||||
|
|
||||||
* [Types](kcl/types)
|
* [Types](kcl/types)
|
||||||
|
* [Modules](kcl/modules)
|
||||||
* [Known Issues](kcl/KNOWN-ISSUES)
|
* [Known Issues](kcl/KNOWN-ISSUES)
|
||||||
{{#each functions}}
|
{{#each functions}}
|
||||||
* [`{{name}}`](kcl/{{name}})
|
* [`{{name}}`](kcl/{{name}})
|
||||||
|
|||||||
@ -801,6 +801,17 @@ impl Plane {
|
|||||||
},
|
},
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// The standard planes are XY, YZ and XZ (in both positive and negative)
|
||||||
|
pub fn is_standard(&self) -> bool {
|
||||||
|
!self.is_custom()
|
||||||
|
}
|
||||||
|
|
||||||
|
/// The standard planes are XY, YZ and XZ (in both positive and negative)
|
||||||
|
/// Custom planes are any other plane that the user might specify.
|
||||||
|
pub fn is_custom(&self) -> bool {
|
||||||
|
matches!(self.value, PlaneType::Custom)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
#[derive(Debug, Default, Clone, Deserialize, Serialize, PartialEq, ts_rs::TS, JsonSchema)]
|
#[derive(Debug, Default, Clone, Deserialize, Serialize, PartialEq, ts_rs::TS, JsonSchema)]
|
||||||
@ -1049,6 +1060,14 @@ impl KclValue {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
pub fn as_plane(&self) -> Option<&Plane> {
|
||||||
|
if let KclValue::Plane(value) = &self {
|
||||||
|
Some(value)
|
||||||
|
} else {
|
||||||
|
None
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
pub fn as_solid(&self) -> Option<&Solid> {
|
pub fn as_solid(&self) -> Option<&Solid> {
|
||||||
if let KclValue::Solid(value) = &self {
|
if let KclValue::Solid(value) = &self {
|
||||||
Some(value)
|
Some(value)
|
||||||
@ -3033,14 +3052,14 @@ for var in [[3, 6, 10, [0,0]], [1.5, 3, 5, [-10,-10]]] {
|
|||||||
|
|
||||||
#[tokio::test(flavor = "multi_thread")]
|
#[tokio::test(flavor = "multi_thread")]
|
||||||
async fn test_get_member_of_array_with_function() {
|
async fn test_get_member_of_array_with_function() {
|
||||||
let ast = r#"fn box = (array) => {
|
let ast = r#"fn box = (arr) => {
|
||||||
let myBox =startSketchOn('XY')
|
let myBox =startSketchOn('XY')
|
||||||
|> startProfileAt(array[0], %)
|
|> startProfileAt(arr[0], %)
|
||||||
|> line([0, array[1]], %)
|
|> line([0, arr[1]], %)
|
||||||
|> line([array[2], 0], %)
|
|> line([arr[2], 0], %)
|
||||||
|> line([0, -array[1]], %)
|
|> line([0, -arr[1]], %)
|
||||||
|> close(%)
|
|> close(%)
|
||||||
|> extrude(array[3], %)
|
|> extrude(arr[3], %)
|
||||||
|
|
||||||
return myBox
|
return myBox
|
||||||
}
|
}
|
||||||
|
|||||||
@ -2,7 +2,7 @@ use std::collections::BTreeMap;
|
|||||||
|
|
||||||
use pretty_assertions::assert_eq;
|
use pretty_assertions::assert_eq;
|
||||||
use tower_lsp::{
|
use tower_lsp::{
|
||||||
lsp_types::{SemanticTokenModifier, SemanticTokenType},
|
lsp_types::{Diagnostic, SemanticTokenModifier, SemanticTokenType},
|
||||||
LanguageServer,
|
LanguageServer,
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -2369,7 +2369,14 @@ async fn kcl_test_kcl_lsp_diagnostics_on_execution_error() {
|
|||||||
|
|
||||||
// Get the diagnostics.
|
// Get the diagnostics.
|
||||||
let diagnostics = server.diagnostics_map.get("file:///test.kcl");
|
let diagnostics = server.diagnostics_map.get("file:///test.kcl");
|
||||||
assert!(diagnostics.is_none());
|
if let Some(diagnostics) = diagnostics {
|
||||||
|
let ds: Vec<Diagnostic> = diagnostics.to_owned();
|
||||||
|
eprintln!("Expected no diagnostics, but found some.");
|
||||||
|
for d in ds {
|
||||||
|
eprintln!("{:?}: {}", d.severity, d.message);
|
||||||
|
}
|
||||||
|
panic!();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
#[tokio::test(flavor = "multi_thread")]
|
#[tokio::test(flavor = "multi_thread")]
|
||||||
|
|||||||
@ -2040,11 +2040,39 @@ fn fn_call(i: TokenSlice) -> PResult<Node<CallExpression>> {
|
|||||||
|
|
||||||
#[cfg(test)]
|
#[cfg(test)]
|
||||||
mod tests {
|
mod tests {
|
||||||
|
use itertools::Itertools;
|
||||||
use pretty_assertions::assert_eq;
|
use pretty_assertions::assert_eq;
|
||||||
|
|
||||||
use super::*;
|
use super::*;
|
||||||
use crate::ast::types::{BodyItem, Expr, ModuleId, VariableKind};
|
use crate::ast::types::{BodyItem, Expr, ModuleId, VariableKind};
|
||||||
|
|
||||||
|
fn assert_reserved(word: &str) {
|
||||||
|
// Try to use it as a variable name.
|
||||||
|
let code = format!(r#"{} = 0"#, word);
|
||||||
|
let result = crate::parser::top_level_parse(code.as_str());
|
||||||
|
let err = result.unwrap_err();
|
||||||
|
// Which token causes the error may change. In "return = 0", for
|
||||||
|
// example, "return" is the problem.
|
||||||
|
assert!(
|
||||||
|
err.message().starts_with("Unexpected token: ")
|
||||||
|
|| err
|
||||||
|
.message()
|
||||||
|
.starts_with("Cannot assign a variable to a reserved keyword: "),
|
||||||
|
"Error message is: {}",
|
||||||
|
err.message(),
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
fn reserved_words() {
|
||||||
|
// Since these are stored in a set, we sort to make the tests
|
||||||
|
// deterministic.
|
||||||
|
for word in crate::token::RESERVED_WORDS.keys().sorted() {
|
||||||
|
assert_reserved(word);
|
||||||
|
}
|
||||||
|
assert_reserved("import");
|
||||||
|
}
|
||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
fn parse_args() {
|
fn parse_args() {
|
||||||
for (i, (test, expected_len)) in [("someVar", 1), ("5, 3", 2), (r#""a""#, 1)].into_iter().enumerate() {
|
for (i, (test, expected_len)) in [("someVar", 1), ("5, 3", 2), (r#""a""#, 1)].into_iter().enumerate() {
|
||||||
|
|||||||
@ -794,6 +794,45 @@ impl<'a> FromKclValue<'a> for crate::std::planes::StandardPlane {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
impl<'a> FromKclValue<'a> for crate::executor::Plane {
|
||||||
|
fn from_kcl_val(arg: &'a KclValue) -> Option<Self> {
|
||||||
|
if let Some(plane) = arg.as_plane() {
|
||||||
|
return Some(plane.clone());
|
||||||
|
}
|
||||||
|
|
||||||
|
let obj = arg.as_object()?;
|
||||||
|
let_field_of!(obj, id);
|
||||||
|
let_field_of!(obj, value);
|
||||||
|
let_field_of!(obj, origin);
|
||||||
|
let_field_of!(obj, x_axis "xAxis");
|
||||||
|
let_field_of!(obj, y_axis "yAxis");
|
||||||
|
let_field_of!(obj, z_axis "zAxis");
|
||||||
|
let_field_of!(obj, meta "__meta");
|
||||||
|
Some(Self {
|
||||||
|
id,
|
||||||
|
value,
|
||||||
|
origin,
|
||||||
|
x_axis,
|
||||||
|
y_axis,
|
||||||
|
z_axis,
|
||||||
|
meta,
|
||||||
|
})
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
impl<'a> FromKclValue<'a> for crate::executor::PlaneType {
|
||||||
|
fn from_kcl_val(arg: &'a KclValue) -> Option<Self> {
|
||||||
|
let plane_type = match arg.as_str()? {
|
||||||
|
"XY" | "xy" => Self::XY,
|
||||||
|
"XZ" | "xz" => Self::XZ,
|
||||||
|
"YZ" | "yz" => Self::YZ,
|
||||||
|
"Custom" => Self::Custom,
|
||||||
|
_ => return None,
|
||||||
|
};
|
||||||
|
Some(plane_type)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
impl<'a> FromKclValue<'a> for kittycad_modeling_cmds::units::UnitLength {
|
impl<'a> FromKclValue<'a> for kittycad_modeling_cmds::units::UnitLength {
|
||||||
fn from_kcl_val(arg: &'a KclValue) -> Option<Self> {
|
fn from_kcl_val(arg: &'a KclValue) -> Option<Self> {
|
||||||
let s = arg.as_str()?;
|
let s = arg.as_str()?;
|
||||||
@ -1032,6 +1071,15 @@ impl<'a> FromKclValue<'a> for super::sketch::ArcData {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
impl<'a> FromKclValue<'a> for super::sketch::ArcToData {
|
||||||
|
fn from_kcl_val(arg: &'a KclValue) -> Option<Self> {
|
||||||
|
let obj = arg.as_object()?;
|
||||||
|
let_field_of!(obj, end);
|
||||||
|
let_field_of!(obj, interior);
|
||||||
|
Some(Self { end, interior })
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
impl<'a> FromKclValue<'a> for super::revolve::RevolveData {
|
impl<'a> FromKclValue<'a> for super::revolve::RevolveData {
|
||||||
fn from_kcl_val(arg: &'a KclValue) -> Option<Self> {
|
fn from_kcl_val(arg: &'a KclValue) -> Option<Self> {
|
||||||
let obj = arg.as_object()?;
|
let obj = arg.as_object()?;
|
||||||
@ -1264,11 +1312,15 @@ impl<'a> FromKclValue<'a> for crate::executor::Solid {
|
|||||||
|
|
||||||
impl<'a> FromKclValue<'a> for super::sketch::SketchData {
|
impl<'a> FromKclValue<'a> for super::sketch::SketchData {
|
||||||
fn from_kcl_val(arg: &'a KclValue) -> Option<Self> {
|
fn from_kcl_val(arg: &'a KclValue) -> Option<Self> {
|
||||||
let case1 = super::sketch::PlaneData::from_kcl_val;
|
// Order is critical since PlaneData is a subset of Plane.
|
||||||
let case2 = crate::executor::Solid::from_kcl_val;
|
let case1 = crate::executor::Plane::from_kcl_val;
|
||||||
|
let case2 = super::sketch::PlaneData::from_kcl_val;
|
||||||
|
let case3 = crate::executor::Solid::from_kcl_val;
|
||||||
case1(arg)
|
case1(arg)
|
||||||
|
.map(Box::new)
|
||||||
.map(Self::Plane)
|
.map(Self::Plane)
|
||||||
.or_else(|| case2(arg).map(Box::new).map(Self::Solid))
|
.or_else(|| case2(arg).map(Self::PlaneOrientation))
|
||||||
|
.or_else(|| case3(arg).map(Box::new).map(Self::Solid))
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -107,14 +107,14 @@ pub async fn reduce(exec_state: &mut ExecState, args: Args) -> Result<KclValue,
|
|||||||
///
|
///
|
||||||
/// // This function adds an array of numbers.
|
/// // This function adds an array of numbers.
|
||||||
/// // It uses the `reduce` function, to call the `add` function on every
|
/// // It uses the `reduce` function, to call the `add` function on every
|
||||||
/// // element of the `array` parameter. The starting value is 0.
|
/// // element of the `arr` parameter. The starting value is 0.
|
||||||
/// fn sum = (array) => { return reduce(array, 0, add) }
|
/// fn sum = (arr) => { return reduce(arr, 0, add) }
|
||||||
///
|
///
|
||||||
/// /*
|
/// /*
|
||||||
/// The above is basically like this pseudo-code:
|
/// The above is basically like this pseudo-code:
|
||||||
/// fn sum(array):
|
/// fn sum(arr):
|
||||||
/// let sumSoFar = 0
|
/// let sumSoFar = 0
|
||||||
/// for i in array:
|
/// for i in arr:
|
||||||
/// sumSoFar = add(sumSoFar, i)
|
/// sumSoFar = add(sumSoFar, i)
|
||||||
/// return sumSoFar
|
/// return sumSoFar
|
||||||
/// */
|
/// */
|
||||||
@ -127,8 +127,8 @@ pub async fn reduce(exec_state: &mut ExecState, args: Args) -> Result<KclValue,
|
|||||||
/// // This example works just like the previous example above, but it uses
|
/// // This example works just like the previous example above, but it uses
|
||||||
/// // an anonymous `add` function as its parameter, instead of declaring a
|
/// // an anonymous `add` function as its parameter, instead of declaring a
|
||||||
/// // named function outside.
|
/// // named function outside.
|
||||||
/// array = [1, 2, 3]
|
/// arr = [1, 2, 3]
|
||||||
/// sum = reduce(array, 0, (i, result_so_far) => { return i + result_so_far })
|
/// sum = reduce(arr, 0, (i, result_so_far) => { return i + result_so_far })
|
||||||
///
|
///
|
||||||
/// // We use `assertEqual` to check that our `sum` function gives the
|
/// // We use `assertEqual` to check that our `sum` function gives the
|
||||||
/// // expected result. It's good to check your work!
|
/// // expected result. It's good to check your work!
|
||||||
|
|||||||
@ -144,6 +144,9 @@ pub async fn import(exec_state: &mut ExecState, args: Args) -> Result<KclValue,
|
|||||||
/// Note: The import command currently only works when using the native
|
/// Note: The import command currently only works when using the native
|
||||||
/// Modeling App.
|
/// Modeling App.
|
||||||
///
|
///
|
||||||
|
/// For importing KCL functions using the `import` statement, see the docs on
|
||||||
|
/// [KCL modules](/docs/kcl/modules).
|
||||||
|
///
|
||||||
/// ```no_run
|
/// ```no_run
|
||||||
/// const model = import("tests/inputs/cube.obj")
|
/// const model = import("tests/inputs/cube.obj")
|
||||||
/// ```
|
/// ```
|
||||||
@ -163,6 +166,15 @@ pub async fn import(exec_state: &mut ExecState, args: Args) -> Result<KclValue,
|
|||||||
/// ```no_run
|
/// ```no_run
|
||||||
/// const model = import("tests/inputs/cube.step")
|
/// const model = import("tests/inputs/cube.step")
|
||||||
/// ```
|
/// ```
|
||||||
|
///
|
||||||
|
/// ```no_run
|
||||||
|
/// import height, buildSketch from 'common.kcl'
|
||||||
|
///
|
||||||
|
/// plane = 'XZ'
|
||||||
|
/// margin = 2
|
||||||
|
/// s1 = buildSketch(plane, [0, 0])
|
||||||
|
/// s2 = buildSketch(plane, [0, height() + margin])
|
||||||
|
/// ```
|
||||||
#[stdlib {
|
#[stdlib {
|
||||||
name = "import",
|
name = "import",
|
||||||
tags = [],
|
tags = [],
|
||||||
|
|||||||
@ -91,6 +91,7 @@ lazy_static! {
|
|||||||
Box::new(crate::std::sketch::ProfileStart),
|
Box::new(crate::std::sketch::ProfileStart),
|
||||||
Box::new(crate::std::sketch::Close),
|
Box::new(crate::std::sketch::Close),
|
||||||
Box::new(crate::std::sketch::Arc),
|
Box::new(crate::std::sketch::Arc),
|
||||||
|
Box::new(crate::std::sketch::ArcTo),
|
||||||
Box::new(crate::std::sketch::TangentialArc),
|
Box::new(crate::std::sketch::TangentialArc),
|
||||||
Box::new(crate::std::sketch::TangentialArcTo),
|
Box::new(crate::std::sketch::TangentialArcTo),
|
||||||
Box::new(crate::std::sketch::TangentialArcToRelative),
|
Box::new(crate::std::sketch::TangentialArcToRelative),
|
||||||
|
|||||||
@ -1,17 +1,20 @@
|
|||||||
//! Standard library plane helpers.
|
//! Standard library plane helpers.
|
||||||
|
|
||||||
use derive_docs::stdlib;
|
use derive_docs::stdlib;
|
||||||
|
use kcmc::{each_cmd as mcmd, length_unit::LengthUnit, shared::Color, ModelingCmd};
|
||||||
|
use kittycad_modeling_cmds as kcmc;
|
||||||
use schemars::JsonSchema;
|
use schemars::JsonSchema;
|
||||||
use serde::{Deserialize, Serialize};
|
use serde::{Deserialize, Serialize};
|
||||||
|
|
||||||
use crate::{
|
use crate::{
|
||||||
errors::KclError,
|
errors::KclError,
|
||||||
executor::{ExecState, KclValue, Plane},
|
executor::{ExecState, KclValue, Plane, PlaneType},
|
||||||
std::{sketch::PlaneData, Args},
|
std::{sketch::PlaneData, Args},
|
||||||
};
|
};
|
||||||
|
|
||||||
/// One of the standard planes.
|
/// One of the standard planes.
|
||||||
#[derive(Debug, Clone, Copy, Deserialize, Serialize, PartialEq, JsonSchema)]
|
#[derive(Debug, Clone, Copy, Deserialize, Serialize, PartialEq, ts_rs::TS, JsonSchema)]
|
||||||
|
#[ts(export)]
|
||||||
#[serde(rename_all = "camelCase")]
|
#[serde(rename_all = "camelCase")]
|
||||||
pub enum StandardPlane {
|
pub enum StandardPlane {
|
||||||
/// The XY plane.
|
/// The XY plane.
|
||||||
@ -50,8 +53,8 @@ impl From<StandardPlane> for PlaneData {
|
|||||||
/// Offset a plane by a distance along its normal.
|
/// Offset a plane by a distance along its normal.
|
||||||
pub async fn offset_plane(exec_state: &mut ExecState, args: Args) -> Result<KclValue, KclError> {
|
pub async fn offset_plane(exec_state: &mut ExecState, args: Args) -> Result<KclValue, KclError> {
|
||||||
let (std_plane, offset): (StandardPlane, f64) = args.get_data_and_float()?;
|
let (std_plane, offset): (StandardPlane, f64) = args.get_data_and_float()?;
|
||||||
let plane_data = inner_offset_plane(std_plane, offset, exec_state).await?;
|
let plane = inner_offset_plane(std_plane, offset, exec_state).await?;
|
||||||
let plane = Plane::from_plane_data(plane_data, exec_state);
|
make_offset_plane_in_engine(&plane, exec_state, &args).await?;
|
||||||
Ok(KclValue::Plane(Box::new(plane)))
|
Ok(KclValue::Plane(Box::new(plane)))
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -144,11 +147,14 @@ async fn inner_offset_plane(
|
|||||||
std_plane: StandardPlane,
|
std_plane: StandardPlane,
|
||||||
offset: f64,
|
offset: f64,
|
||||||
exec_state: &mut ExecState,
|
exec_state: &mut ExecState,
|
||||||
) -> Result<PlaneData, KclError> {
|
) -> Result<Plane, KclError> {
|
||||||
// Convert to the plane type.
|
// Convert to the plane type.
|
||||||
let plane_data: PlaneData = std_plane.into();
|
let plane_data: PlaneData = std_plane.into();
|
||||||
// Convert to a plane.
|
// Convert to a plane.
|
||||||
let mut plane = Plane::from_plane_data(plane_data, exec_state);
|
let mut plane = Plane::from_plane_data(plane_data, exec_state);
|
||||||
|
// Though offset planes are derived from standard planes, they are not
|
||||||
|
// standard planes themselves.
|
||||||
|
plane.value = PlaneType::Custom;
|
||||||
|
|
||||||
match std_plane {
|
match std_plane {
|
||||||
StandardPlane::XY => {
|
StandardPlane::XY => {
|
||||||
@ -171,10 +177,44 @@ async fn inner_offset_plane(
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
Ok(PlaneData::Plane {
|
Ok(plane)
|
||||||
origin: Box::new(plane.origin),
|
}
|
||||||
x_axis: Box::new(plane.x_axis),
|
|
||||||
y_axis: Box::new(plane.y_axis),
|
// Engine-side effectful creation of an actual plane object.
|
||||||
z_axis: Box::new(plane.z_axis),
|
// offset planes are shown by default, and hidden by default if they
|
||||||
})
|
// are used as a sketch plane. That hiding command is sent within inner_start_profile_at
|
||||||
|
async fn make_offset_plane_in_engine(plane: &Plane, exec_state: &mut ExecState, args: &Args) -> Result<(), KclError> {
|
||||||
|
// Create new default planes.
|
||||||
|
let default_size = 100.0;
|
||||||
|
let color = Color {
|
||||||
|
r: 0.6,
|
||||||
|
g: 0.6,
|
||||||
|
b: 0.6,
|
||||||
|
a: 0.3,
|
||||||
|
};
|
||||||
|
|
||||||
|
args.batch_modeling_cmd(
|
||||||
|
plane.id,
|
||||||
|
ModelingCmd::from(mcmd::MakePlane {
|
||||||
|
clobber: false,
|
||||||
|
origin: plane.origin.into(),
|
||||||
|
size: LengthUnit(default_size),
|
||||||
|
x_axis: plane.x_axis.into(),
|
||||||
|
y_axis: plane.y_axis.into(),
|
||||||
|
hide: Some(false),
|
||||||
|
}),
|
||||||
|
)
|
||||||
|
.await?;
|
||||||
|
|
||||||
|
// Set the color.
|
||||||
|
args.batch_modeling_cmd(
|
||||||
|
exec_state.id_generator.next_uuid(),
|
||||||
|
ModelingCmd::from(mcmd::PlaneSetColor {
|
||||||
|
color,
|
||||||
|
plane_id: plane.id,
|
||||||
|
}),
|
||||||
|
)
|
||||||
|
.await?;
|
||||||
|
|
||||||
|
Ok(())
|
||||||
}
|
}
|
||||||
|
|||||||
@ -894,7 +894,7 @@ pub async fn start_sketch_at(exec_state: &mut ExecState, args: Args) -> Result<K
|
|||||||
async fn inner_start_sketch_at(data: [f64; 2], exec_state: &mut ExecState, args: Args) -> Result<Sketch, KclError> {
|
async fn inner_start_sketch_at(data: [f64; 2], exec_state: &mut ExecState, args: Args) -> Result<Sketch, KclError> {
|
||||||
// Let's assume it's the XY plane for now, this is just for backwards compatibility.
|
// Let's assume it's the XY plane for now, this is just for backwards compatibility.
|
||||||
let xy_plane = PlaneData::XY;
|
let xy_plane = PlaneData::XY;
|
||||||
let sketch_surface = inner_start_sketch_on(SketchData::Plane(xy_plane), None, exec_state, &args).await?;
|
let sketch_surface = inner_start_sketch_on(SketchData::PlaneOrientation(xy_plane), None, exec_state, &args).await?;
|
||||||
let sketch = inner_start_profile_at(data, sketch_surface, None, exec_state, args).await?;
|
let sketch = inner_start_profile_at(data, sketch_surface, None, exec_state, args).await?;
|
||||||
Ok(sketch)
|
Ok(sketch)
|
||||||
}
|
}
|
||||||
@ -905,11 +905,12 @@ async fn inner_start_sketch_at(data: [f64; 2], exec_state: &mut ExecState, args:
|
|||||||
#[ts(export)]
|
#[ts(export)]
|
||||||
#[serde(rename_all = "camelCase", untagged)]
|
#[serde(rename_all = "camelCase", untagged)]
|
||||||
pub enum SketchData {
|
pub enum SketchData {
|
||||||
Plane(PlaneData),
|
PlaneOrientation(PlaneData),
|
||||||
|
Plane(Box<Plane>),
|
||||||
Solid(Box<Solid>),
|
Solid(Box<Solid>),
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Data for a plane.
|
/// Orientation data that can be used to construct a plane, not a plane in itself.
|
||||||
#[derive(Debug, Clone, Deserialize, Serialize, PartialEq, ts_rs::TS, JsonSchema)]
|
#[derive(Debug, Clone, Deserialize, Serialize, PartialEq, ts_rs::TS, JsonSchema)]
|
||||||
#[ts(export)]
|
#[ts(export)]
|
||||||
#[serde(rename_all = "camelCase")]
|
#[serde(rename_all = "camelCase")]
|
||||||
@ -1069,10 +1070,11 @@ async fn inner_start_sketch_on(
|
|||||||
args: &Args,
|
args: &Args,
|
||||||
) -> Result<SketchSurface, KclError> {
|
) -> Result<SketchSurface, KclError> {
|
||||||
match data {
|
match data {
|
||||||
SketchData::Plane(plane_data) => {
|
SketchData::PlaneOrientation(plane_data) => {
|
||||||
let plane = start_sketch_on_plane(plane_data, exec_state, args).await?;
|
let plane = make_sketch_plane_from_orientation(plane_data, exec_state, args).await?;
|
||||||
Ok(SketchSurface::Plane(plane))
|
Ok(SketchSurface::Plane(plane))
|
||||||
}
|
}
|
||||||
|
SketchData::Plane(plane) => Ok(SketchSurface::Plane(plane)),
|
||||||
SketchData::Solid(solid) => {
|
SketchData::Solid(solid) => {
|
||||||
let Some(tag) = tag else {
|
let Some(tag) = tag else {
|
||||||
return Err(KclError::Type(KclErrorDetails {
|
return Err(KclError::Type(KclErrorDetails {
|
||||||
@ -1106,7 +1108,7 @@ async fn start_sketch_on_face(
|
|||||||
}))
|
}))
|
||||||
}
|
}
|
||||||
|
|
||||||
async fn start_sketch_on_plane(
|
async fn make_sketch_plane_from_orientation(
|
||||||
data: PlaneData,
|
data: PlaneData,
|
||||||
exec_state: &mut ExecState,
|
exec_state: &mut ExecState,
|
||||||
args: &Args,
|
args: &Args,
|
||||||
@ -1122,10 +1124,10 @@ async fn start_sketch_on_plane(
|
|||||||
|
|
||||||
plane.id = match data {
|
plane.id = match data {
|
||||||
PlaneData::XY => default_planes.xy,
|
PlaneData::XY => default_planes.xy,
|
||||||
PlaneData::XZ => default_planes.xz,
|
|
||||||
PlaneData::YZ => default_planes.yz,
|
|
||||||
PlaneData::NegXY => default_planes.neg_xy,
|
PlaneData::NegXY => default_planes.neg_xy,
|
||||||
|
PlaneData::XZ => default_planes.xz,
|
||||||
PlaneData::NegXZ => default_planes.neg_xz,
|
PlaneData::NegXZ => default_planes.neg_xz,
|
||||||
|
PlaneData::YZ => default_planes.yz,
|
||||||
PlaneData::NegYZ => default_planes.neg_yz,
|
PlaneData::NegYZ => default_planes.neg_yz,
|
||||||
PlaneData::Plane {
|
PlaneData::Plane {
|
||||||
origin,
|
origin,
|
||||||
@ -1210,11 +1212,26 @@ pub(crate) async fn inner_start_profile_at(
|
|||||||
exec_state: &mut ExecState,
|
exec_state: &mut ExecState,
|
||||||
args: Args,
|
args: Args,
|
||||||
) -> Result<Sketch, KclError> {
|
) -> Result<Sketch, KclError> {
|
||||||
if let SketchSurface::Face(face) = &sketch_surface {
|
match &sketch_surface {
|
||||||
// Flush the batch for our fillets/chamfers if there are any.
|
SketchSurface::Face(face) => {
|
||||||
// If we do not do these for sketch on face, things will fail with face does not exist.
|
// Flush the batch for our fillets/chamfers if there are any.
|
||||||
args.flush_batch_for_solid_set(exec_state, face.solid.clone().into())
|
// If we do not do these for sketch on face, things will fail with face does not exist.
|
||||||
|
args.flush_batch_for_solid_set(exec_state, face.solid.clone().into())
|
||||||
|
.await?;
|
||||||
|
}
|
||||||
|
SketchSurface::Plane(plane) if !plane.is_standard() => {
|
||||||
|
// Hide whatever plane we are sketching on.
|
||||||
|
// This is especially helpful for offset planes, which would be visible otherwise.
|
||||||
|
args.batch_end_cmd(
|
||||||
|
exec_state.id_generator.next_uuid(),
|
||||||
|
ModelingCmd::from(mcmd::ObjectVisible {
|
||||||
|
object_id: plane.id,
|
||||||
|
hidden: true,
|
||||||
|
}),
|
||||||
|
)
|
||||||
.await?;
|
.await?;
|
||||||
|
}
|
||||||
|
_ => {}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Enter sketch mode on the surface.
|
// Enter sketch mode on the surface.
|
||||||
@ -1469,6 +1486,17 @@ pub enum ArcData {
|
|||||||
},
|
},
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// Data to draw a three point arc (arcTo).
|
||||||
|
#[derive(Debug, Clone, Deserialize, Serialize, PartialEq, ts_rs::TS, JsonSchema)]
|
||||||
|
#[ts(export)]
|
||||||
|
#[serde(rename_all = "camelCase")]
|
||||||
|
pub struct ArcToData {
|
||||||
|
/// End point of the arc. A point in 3D space
|
||||||
|
pub end: [f64; 2],
|
||||||
|
/// Interior point of the arc. A point in 3D space
|
||||||
|
pub interior: [f64; 2],
|
||||||
|
}
|
||||||
|
|
||||||
/// Draw an arc.
|
/// Draw an arc.
|
||||||
pub async fn arc(exec_state: &mut ExecState, args: Args) -> Result<KclValue, KclError> {
|
pub async fn arc(exec_state: &mut ExecState, args: Args) -> Result<KclValue, KclError> {
|
||||||
let (data, sketch, tag): (ArcData, Sketch, Option<TagNode>) = args.get_data_and_sketch_and_tag()?;
|
let (data, sketch, tag): (ArcData, Sketch, Option<TagNode>) = args.get_data_and_sketch_and_tag()?;
|
||||||
@ -1499,7 +1527,7 @@ pub async fn arc(exec_state: &mut ExecState, args: Args) -> Result<KclValue, Kcl
|
|||||||
/// radius: 16
|
/// radius: 16
|
||||||
/// }, %)
|
/// }, %)
|
||||||
/// |> close(%)
|
/// |> close(%)
|
||||||
// const example = extrude(10, exampleSketch)
|
/// const example = extrude(10, exampleSketch)
|
||||||
/// ```
|
/// ```
|
||||||
#[stdlib {
|
#[stdlib {
|
||||||
name = "arc",
|
name = "arc",
|
||||||
@ -1578,6 +1606,104 @@ pub(crate) async fn inner_arc(
|
|||||||
Ok(new_sketch)
|
Ok(new_sketch)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// Draw a three point arc.
|
||||||
|
pub async fn arc_to(exec_state: &mut ExecState, args: Args) -> Result<KclValue, KclError> {
|
||||||
|
let (data, sketch, tag): (ArcToData, Sketch, Option<TagNode>) = args.get_data_and_sketch_and_tag()?;
|
||||||
|
|
||||||
|
let new_sketch = inner_arc_to(data, sketch, tag, exec_state, args).await?;
|
||||||
|
Ok(KclValue::Sketch {
|
||||||
|
value: Box::new(new_sketch),
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
/// Draw a 3 point arc.
|
||||||
|
///
|
||||||
|
/// The arc is constructed such that the start point is the current position of the sketch and two more points defined as the end and interior point.
|
||||||
|
/// The interior point is placed between the start point and end point. The radius of the arc will be controlled by how far the interior point is placed from
|
||||||
|
/// the start and end.
|
||||||
|
///
|
||||||
|
/// ```no_run
|
||||||
|
/// const exampleSketch = startSketchOn('XZ')
|
||||||
|
/// |> startProfileAt([0, 0], %)
|
||||||
|
/// |> arcTo({
|
||||||
|
/// end: [10,0],
|
||||||
|
/// interior: [5,5]
|
||||||
|
/// }, %)
|
||||||
|
/// |> close(%)
|
||||||
|
/// const example = extrude(10, exampleSketch)
|
||||||
|
/// ```
|
||||||
|
#[stdlib {
|
||||||
|
name = "arcTo",
|
||||||
|
}]
|
||||||
|
pub(crate) async fn inner_arc_to(
|
||||||
|
data: ArcToData,
|
||||||
|
sketch: Sketch,
|
||||||
|
tag: Option<TagNode>,
|
||||||
|
exec_state: &mut ExecState,
|
||||||
|
args: Args,
|
||||||
|
) -> Result<Sketch, KclError> {
|
||||||
|
let from: Point2d = sketch.current_pen_position()?;
|
||||||
|
let id = exec_state.id_generator.next_uuid();
|
||||||
|
|
||||||
|
// The start point is taken from the path you are extending.
|
||||||
|
args.batch_modeling_cmd(
|
||||||
|
id,
|
||||||
|
ModelingCmd::from(mcmd::ExtendPath {
|
||||||
|
path: sketch.id.into(),
|
||||||
|
segment: PathSegment::ArcTo {
|
||||||
|
end: kcmc::shared::Point3d {
|
||||||
|
x: LengthUnit(data.end[0]),
|
||||||
|
y: LengthUnit(data.end[1]),
|
||||||
|
z: LengthUnit(0.0),
|
||||||
|
},
|
||||||
|
interior: kcmc::shared::Point3d {
|
||||||
|
x: LengthUnit(data.interior[0]),
|
||||||
|
y: LengthUnit(data.interior[1]),
|
||||||
|
z: LengthUnit(0.0),
|
||||||
|
},
|
||||||
|
relative: false,
|
||||||
|
},
|
||||||
|
}),
|
||||||
|
)
|
||||||
|
.await?;
|
||||||
|
|
||||||
|
let start = [from.x, from.y];
|
||||||
|
let interior = [data.interior[0], data.interior[1]];
|
||||||
|
let end = [data.end[0], data.end[1]];
|
||||||
|
|
||||||
|
// compute the center of the circle since we do not have the value returned from the engine
|
||||||
|
let center = calculate_circle_center(start, interior, end);
|
||||||
|
|
||||||
|
// compute the radius since we do not have the value returned from the engine
|
||||||
|
// Pick any of the 3 points since they all lie along the circle
|
||||||
|
let sum_of_square_differences =
|
||||||
|
(center[0] - start[0] * center[0] - start[0]) + (center[1] - start[1] * center[1] - start[1]);
|
||||||
|
let radius = sum_of_square_differences.sqrt();
|
||||||
|
|
||||||
|
let current_path = Path::Arc {
|
||||||
|
base: BasePath {
|
||||||
|
from: from.into(),
|
||||||
|
to: data.end,
|
||||||
|
tag: tag.clone(),
|
||||||
|
geo_meta: GeoMeta {
|
||||||
|
id,
|
||||||
|
metadata: args.source_range.into(),
|
||||||
|
},
|
||||||
|
},
|
||||||
|
center,
|
||||||
|
radius,
|
||||||
|
};
|
||||||
|
|
||||||
|
let mut new_sketch = sketch.clone();
|
||||||
|
if let Some(tag) = &tag {
|
||||||
|
new_sketch.add_tag(tag, ¤t_path);
|
||||||
|
}
|
||||||
|
|
||||||
|
new_sketch.paths.push(current_path);
|
||||||
|
|
||||||
|
Ok(new_sketch)
|
||||||
|
}
|
||||||
|
|
||||||
/// Data to draw a tangential arc.
|
/// Data to draw a tangential arc.
|
||||||
#[derive(Debug, Clone, Deserialize, Serialize, PartialEq, JsonSchema, ts_rs::TS)]
|
#[derive(Debug, Clone, Deserialize, Serialize, PartialEq, JsonSchema, ts_rs::TS)]
|
||||||
#[ts(export)]
|
#[ts(export)]
|
||||||
@ -1897,6 +2023,42 @@ async fn inner_tangential_arc_to_relative(
|
|||||||
Ok(new_sketch)
|
Ok(new_sketch)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Calculate the center of 3 points
|
||||||
|
// To calculate the center of the 3 point circle 2 perpendicular lines are created
|
||||||
|
// These perpendicular lines will intersect at the center of the circle.
|
||||||
|
fn calculate_circle_center(p1: [f64; 2], p2: [f64; 2], p3: [f64; 2]) -> [f64; 2] {
|
||||||
|
// y2 - y1
|
||||||
|
let y_2_1 = p2[1] - p1[1];
|
||||||
|
// y3 - y2
|
||||||
|
let y_3_2 = p3[1] - p2[1];
|
||||||
|
// x2 - x1
|
||||||
|
let x_2_1 = p2[0] - p1[0];
|
||||||
|
// x3 - x2
|
||||||
|
let x_3_2 = p3[0] - p2[0];
|
||||||
|
|
||||||
|
// Slope of two perpendicular lines
|
||||||
|
let slope_a = y_2_1 / x_2_1;
|
||||||
|
let slope_b = y_3_2 / x_3_2;
|
||||||
|
|
||||||
|
// Values for line intersection
|
||||||
|
// y1 - y3
|
||||||
|
let y_1_3 = p1[1] - p3[1];
|
||||||
|
// x1 + x2
|
||||||
|
let x_1_2 = p1[0] + p2[0];
|
||||||
|
// x2 + x3
|
||||||
|
let x_2_3 = p2[0] + p3[0];
|
||||||
|
// y1 + y2
|
||||||
|
let y_1_2 = p1[1] + p2[1];
|
||||||
|
|
||||||
|
// Solve for the intersection of these two lines
|
||||||
|
let numerator = (slope_a * slope_b * y_1_3) + (slope_b * x_1_2) - (slope_a * x_2_3);
|
||||||
|
let x = numerator / (2.0 * (slope_b - slope_a));
|
||||||
|
|
||||||
|
let y = ((-1.0 / slope_a) * (x - (x_1_2 / 2.0))) + (y_1_2 / 2.0);
|
||||||
|
|
||||||
|
[x, y]
|
||||||
|
}
|
||||||
|
|
||||||
/// Data to draw a bezier curve.
|
/// Data to draw a bezier curve.
|
||||||
#[derive(Debug, Clone, Deserialize, Serialize, PartialEq, ts_rs::TS, JsonSchema)]
|
#[derive(Debug, Clone, Deserialize, Serialize, PartialEq, ts_rs::TS, JsonSchema)]
|
||||||
#[ts(export)]
|
#[ts(export)]
|
||||||
@ -2073,7 +2235,7 @@ mod tests {
|
|||||||
|
|
||||||
use pretty_assertions::assert_eq;
|
use pretty_assertions::assert_eq;
|
||||||
|
|
||||||
use crate::{executor::TagIdentifier, std::sketch::PlaneData};
|
use crate::{executor::TagIdentifier, std::sketch::calculate_circle_center, std::sketch::PlaneData};
|
||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
fn test_deserialize_plane_data() {
|
fn test_deserialize_plane_data() {
|
||||||
@ -2144,4 +2306,11 @@ mod tests {
|
|||||||
crate::std::sketch::FaceTag::StartOrEnd(crate::std::sketch::StartOrEnd::Start)
|
crate::std::sketch::FaceTag::StartOrEnd(crate::std::sketch::StartOrEnd::Start)
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
fn test_circle_center() {
|
||||||
|
let actual = calculate_circle_center([0.0, 0.0], [5.0, 5.0], [10.0, 0.0]);
|
||||||
|
assert_eq!(actual[0], 5.0);
|
||||||
|
assert_eq!(actual[1], 0.0);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -17,6 +17,8 @@ mod tokeniser;
|
|||||||
|
|
||||||
// Re-export
|
// Re-export
|
||||||
pub use tokeniser::Input;
|
pub use tokeniser::Input;
|
||||||
|
#[cfg(test)]
|
||||||
|
pub(crate) use tokeniser::RESERVED_WORDS;
|
||||||
|
|
||||||
/// The types of tokens.
|
/// The types of tokens.
|
||||||
#[derive(Debug, PartialEq, Eq, Copy, Clone, Deserialize, Serialize, ts_rs::TS, JsonSchema, FromStr, Display)]
|
#[derive(Debug, PartialEq, Eq, Copy, Clone, Deserialize, Serialize, ts_rs::TS, JsonSchema, FromStr, Display)]
|
||||||
|
|||||||
@ -1,6 +1,8 @@
|
|||||||
|
use fnv::FnvHashMap;
|
||||||
|
use lazy_static::lazy_static;
|
||||||
use winnow::{
|
use winnow::{
|
||||||
ascii::{digit1, multispace1},
|
ascii::{digit1, multispace1},
|
||||||
combinator::{alt, opt, peek, preceded, repeat, terminated},
|
combinator::{alt, opt, peek, preceded, repeat},
|
||||||
error::{ContextError, ParseError},
|
error::{ContextError, ParseError},
|
||||||
prelude::*,
|
prelude::*,
|
||||||
stream::{Location, Stream},
|
stream::{Location, Stream},
|
||||||
@ -13,6 +15,52 @@ use crate::{
|
|||||||
token::{Token, TokenType},
|
token::{Token, TokenType},
|
||||||
};
|
};
|
||||||
|
|
||||||
|
lazy_static! {
|
||||||
|
pub(crate) static ref RESERVED_WORDS: FnvHashMap<&'static str, TokenType> = {
|
||||||
|
let mut set = FnvHashMap::default();
|
||||||
|
set.insert("if", TokenType::Keyword);
|
||||||
|
set.insert("else", TokenType::Keyword);
|
||||||
|
set.insert("for", TokenType::Keyword);
|
||||||
|
set.insert("while", TokenType::Keyword);
|
||||||
|
set.insert("return", TokenType::Keyword);
|
||||||
|
set.insert("break", TokenType::Keyword);
|
||||||
|
set.insert("continue", TokenType::Keyword);
|
||||||
|
set.insert("fn", TokenType::Keyword);
|
||||||
|
set.insert("let", TokenType::Keyword);
|
||||||
|
set.insert("mut", TokenType::Keyword);
|
||||||
|
set.insert("as", TokenType::Keyword);
|
||||||
|
set.insert("loop", TokenType::Keyword);
|
||||||
|
set.insert("true", TokenType::Keyword);
|
||||||
|
set.insert("false", TokenType::Keyword);
|
||||||
|
set.insert("nil", TokenType::Keyword);
|
||||||
|
// This isn't a type because brackets are used for the type.
|
||||||
|
set.insert("array", TokenType::Keyword);
|
||||||
|
set.insert("and", TokenType::Keyword);
|
||||||
|
set.insert("or", TokenType::Keyword);
|
||||||
|
set.insert("not", TokenType::Keyword);
|
||||||
|
set.insert("var", TokenType::Keyword);
|
||||||
|
set.insert("const", TokenType::Keyword);
|
||||||
|
// "import" is special because of import().
|
||||||
|
set.insert("export", TokenType::Keyword);
|
||||||
|
set.insert("interface", TokenType::Keyword);
|
||||||
|
set.insert("new", TokenType::Keyword);
|
||||||
|
set.insert("self", TokenType::Keyword);
|
||||||
|
set.insert("record", TokenType::Keyword);
|
||||||
|
set.insert("struct", TokenType::Keyword);
|
||||||
|
set.insert("object", TokenType::Keyword);
|
||||||
|
set.insert("_", TokenType::Keyword);
|
||||||
|
|
||||||
|
set.insert("string", TokenType::Type);
|
||||||
|
set.insert("number", TokenType::Type);
|
||||||
|
set.insert("bool", TokenType::Type);
|
||||||
|
set.insert("sketch", TokenType::Type);
|
||||||
|
set.insert("sketch_surface", TokenType::Type);
|
||||||
|
set.insert("solid", TokenType::Type);
|
||||||
|
|
||||||
|
set
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
pub fn lexer(i: &str, module_id: ModuleId) -> Result<Vec<Token>, ParseError<Input<'_>, ContextError>> {
|
pub fn lexer(i: &str, module_id: ModuleId) -> Result<Vec<Token>, ParseError<Input<'_>, ContextError>> {
|
||||||
let state = State::new(module_id);
|
let state = State::new(module_id);
|
||||||
let input = Input {
|
let input = Input {
|
||||||
@ -50,7 +98,7 @@ pub fn token(i: &mut Input<'_>) -> PResult<Token> {
|
|||||||
'$' => dollar,
|
'$' => dollar,
|
||||||
'!' => alt((operator, bang)),
|
'!' => alt((operator, bang)),
|
||||||
' ' | '\t' | '\n' => whitespace,
|
' ' | '\t' | '\n' => whitespace,
|
||||||
_ => alt((operator, keyword,type_, word))
|
_ => alt((operator, keyword_type_or_word))
|
||||||
}
|
}
|
||||||
.parse_next(i)
|
.parse_next(i)
|
||||||
{
|
{
|
||||||
@ -287,47 +335,16 @@ fn import_keyword(i: &mut Input<'_>) -> PResult<Token> {
|
|||||||
))
|
))
|
||||||
}
|
}
|
||||||
|
|
||||||
fn unambiguous_keywords(i: &mut Input<'_>) -> PResult<Token> {
|
fn unambiguous_keyword_type_or_word(i: &mut Input<'_>) -> PResult<Token> {
|
||||||
// These are the keywords themselves.
|
let mut w = word.parse_next(i)?;
|
||||||
let keyword_candidates = alt((
|
if let Some(token_type) = RESERVED_WORDS.get(w.value.as_str()) {
|
||||||
"if", "else", "for", "while", "return", "break", "continue", "fn", "let", "mut", "loop", "true", "false",
|
w.token_type = *token_type;
|
||||||
"nil", "and", "or", "not", "var", "const", "export",
|
}
|
||||||
));
|
Ok(w)
|
||||||
// Look ahead. If any of these characters follow the keyword, then it's not a keyword, it's just
|
|
||||||
// the start of a normal word.
|
|
||||||
let keyword = terminated(
|
|
||||||
keyword_candidates,
|
|
||||||
peek(none_of(('a'..='z', 'A'..='Z', '-', '_', '0'..='9'))),
|
|
||||||
);
|
|
||||||
let (value, range) = keyword.with_span().parse_next(i)?;
|
|
||||||
Ok(Token::from_range(
|
|
||||||
range,
|
|
||||||
i.state.module_id,
|
|
||||||
TokenType::Keyword,
|
|
||||||
value.to_owned(),
|
|
||||||
))
|
|
||||||
}
|
}
|
||||||
|
|
||||||
fn keyword(i: &mut Input<'_>) -> PResult<Token> {
|
fn keyword_type_or_word(i: &mut Input<'_>) -> PResult<Token> {
|
||||||
alt((import_keyword, unambiguous_keywords)).parse_next(i)
|
alt((import_keyword, unambiguous_keyword_type_or_word)).parse_next(i)
|
||||||
}
|
|
||||||
|
|
||||||
fn type_(i: &mut Input<'_>) -> PResult<Token> {
|
|
||||||
// These are the types themselves.
|
|
||||||
let type_candidates = alt(("string", "number", "bool", "sketch", "sketch_surface", "solid"));
|
|
||||||
// Look ahead. If any of these characters follow the type, then it's not a type, it's just
|
|
||||||
// the start of a normal word.
|
|
||||||
let type_ = terminated(
|
|
||||||
type_candidates,
|
|
||||||
peek(none_of(('a'..='z', 'A'..='Z', '-', '_', '0'..='9'))),
|
|
||||||
);
|
|
||||||
let (value, range) = type_.with_span().parse_next(i)?;
|
|
||||||
Ok(Token::from_range(
|
|
||||||
range,
|
|
||||||
i.state.module_id,
|
|
||||||
TokenType::Type,
|
|
||||||
value.to_owned(),
|
|
||||||
))
|
|
||||||
}
|
}
|
||||||
|
|
||||||
#[cfg(test)]
|
#[cfg(test)]
|
||||||
|
|||||||
157
src/wasm-lib/kcl/tests/array_elem_push_fail/ast.snap
Normal file
@ -0,0 +1,157 @@
|
|||||||
|
---
|
||||||
|
source: kcl/src/simulation_tests.rs
|
||||||
|
description: Result of parsing array_elem_push_fail.kcl
|
||||||
|
snapshot_kind: text
|
||||||
|
---
|
||||||
|
{
|
||||||
|
"Ok": {
|
||||||
|
"body": [
|
||||||
|
{
|
||||||
|
"declarations": [
|
||||||
|
{
|
||||||
|
"end": 15,
|
||||||
|
"id": {
|
||||||
|
"end": 3,
|
||||||
|
"name": "arr",
|
||||||
|
"start": 0,
|
||||||
|
"type": "Identifier"
|
||||||
|
},
|
||||||
|
"init": {
|
||||||
|
"elements": [
|
||||||
|
{
|
||||||
|
"end": 8,
|
||||||
|
"raw": "1",
|
||||||
|
"start": 7,
|
||||||
|
"type": "Literal",
|
||||||
|
"type": "Literal",
|
||||||
|
"value": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"end": 11,
|
||||||
|
"raw": "2",
|
||||||
|
"start": 10,
|
||||||
|
"type": "Literal",
|
||||||
|
"type": "Literal",
|
||||||
|
"value": 2
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"end": 14,
|
||||||
|
"raw": "3",
|
||||||
|
"start": 13,
|
||||||
|
"type": "Literal",
|
||||||
|
"type": "Literal",
|
||||||
|
"value": 3
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"end": 15,
|
||||||
|
"start": 6,
|
||||||
|
"type": "ArrayExpression",
|
||||||
|
"type": "ArrayExpression"
|
||||||
|
},
|
||||||
|
"start": 0,
|
||||||
|
"type": "VariableDeclarator"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"end": 15,
|
||||||
|
"kind": "const",
|
||||||
|
"start": 0,
|
||||||
|
"type": "VariableDeclaration",
|
||||||
|
"type": "VariableDeclaration"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"declarations": [
|
||||||
|
{
|
||||||
|
"end": 40,
|
||||||
|
"id": {
|
||||||
|
"end": 25,
|
||||||
|
"name": "pushedArr",
|
||||||
|
"start": 16,
|
||||||
|
"type": "Identifier"
|
||||||
|
},
|
||||||
|
"init": {
|
||||||
|
"arguments": [
|
||||||
|
{
|
||||||
|
"end": 36,
|
||||||
|
"name": "arr",
|
||||||
|
"start": 33,
|
||||||
|
"type": "Identifier",
|
||||||
|
"type": "Identifier"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"end": 39,
|
||||||
|
"raw": "4",
|
||||||
|
"start": 38,
|
||||||
|
"type": "Literal",
|
||||||
|
"type": "Literal",
|
||||||
|
"value": 4
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"callee": {
|
||||||
|
"end": 32,
|
||||||
|
"name": "push",
|
||||||
|
"start": 28,
|
||||||
|
"type": "Identifier"
|
||||||
|
},
|
||||||
|
"end": 40,
|
||||||
|
"optional": false,
|
||||||
|
"start": 28,
|
||||||
|
"type": "CallExpression",
|
||||||
|
"type": "CallExpression"
|
||||||
|
},
|
||||||
|
"start": 16,
|
||||||
|
"type": "VariableDeclarator"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"end": 40,
|
||||||
|
"kind": "const",
|
||||||
|
"start": 16,
|
||||||
|
"type": "VariableDeclaration",
|
||||||
|
"type": "VariableDeclaration"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"declarations": [
|
||||||
|
{
|
||||||
|
"end": 54,
|
||||||
|
"id": {
|
||||||
|
"end": 45,
|
||||||
|
"name": "fail",
|
||||||
|
"start": 41,
|
||||||
|
"type": "Identifier"
|
||||||
|
},
|
||||||
|
"init": {
|
||||||
|
"computed": false,
|
||||||
|
"end": 54,
|
||||||
|
"object": {
|
||||||
|
"end": 51,
|
||||||
|
"name": "arr",
|
||||||
|
"start": 48,
|
||||||
|
"type": "Identifier",
|
||||||
|
"type": "Identifier"
|
||||||
|
},
|
||||||
|
"property": {
|
||||||
|
"end": 53,
|
||||||
|
"raw": "3",
|
||||||
|
"start": 52,
|
||||||
|
"type": "Literal",
|
||||||
|
"type": "Literal",
|
||||||
|
"value": 3
|
||||||
|
},
|
||||||
|
"start": 48,
|
||||||
|
"type": "MemberExpression",
|
||||||
|
"type": "MemberExpression"
|
||||||
|
},
|
||||||
|
"start": 41,
|
||||||
|
"type": "VariableDeclarator"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"end": 54,
|
||||||
|
"kind": "const",
|
||||||
|
"start": 41,
|
||||||
|
"type": "VariableDeclaration",
|
||||||
|
"type": "VariableDeclaration"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"end": 55,
|
||||||
|
"start": 0
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -0,0 +1,6 @@
|
|||||||
|
---
|
||||||
|
source: kcl/src/simulation_tests.rs
|
||||||
|
description: Error from executing array_elem_push_fail.kcl
|
||||||
|
snapshot_kind: text
|
||||||
|
---
|
||||||
|
undefined value: KclErrorDetails { source_ranges: [SourceRange([48, 54, 0])], message: "The array doesn't have any item at index 3" }
|
||||||
3
src/wasm-lib/kcl/tests/array_elem_push_fail/input.kcl
Normal file
@ -0,0 +1,3 @@
|
|||||||
|
arr = [1, 2, 3]
|
||||||
|
pushedArr = push(arr, 4)
|
||||||
|
fail = arr[3]
|
||||||
219
src/wasm-lib/kcl/tests/array_elem_push_fail/tokens.snap
Normal file
@ -0,0 +1,219 @@
|
|||||||
|
---
|
||||||
|
source: kcl/src/simulation_tests.rs
|
||||||
|
description: Result of tokenizing array_elem_push_fail.kcl
|
||||||
|
snapshot_kind: text
|
||||||
|
---
|
||||||
|
{
|
||||||
|
"Ok": [
|
||||||
|
{
|
||||||
|
"type": "word",
|
||||||
|
"start": 0,
|
||||||
|
"end": 3,
|
||||||
|
"value": "arr"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "whitespace",
|
||||||
|
"start": 3,
|
||||||
|
"end": 4,
|
||||||
|
"value": " "
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "operator",
|
||||||
|
"start": 4,
|
||||||
|
"end": 5,
|
||||||
|
"value": "="
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "whitespace",
|
||||||
|
"start": 5,
|
||||||
|
"end": 6,
|
||||||
|
"value": " "
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "brace",
|
||||||
|
"start": 6,
|
||||||
|
"end": 7,
|
||||||
|
"value": "["
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "number",
|
||||||
|
"start": 7,
|
||||||
|
"end": 8,
|
||||||
|
"value": "1"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "comma",
|
||||||
|
"start": 8,
|
||||||
|
"end": 9,
|
||||||
|
"value": ","
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "whitespace",
|
||||||
|
"start": 9,
|
||||||
|
"end": 10,
|
||||||
|
"value": " "
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "number",
|
||||||
|
"start": 10,
|
||||||
|
"end": 11,
|
||||||
|
"value": "2"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "comma",
|
||||||
|
"start": 11,
|
||||||
|
"end": 12,
|
||||||
|
"value": ","
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "whitespace",
|
||||||
|
"start": 12,
|
||||||
|
"end": 13,
|
||||||
|
"value": " "
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "number",
|
||||||
|
"start": 13,
|
||||||
|
"end": 14,
|
||||||
|
"value": "3"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "brace",
|
||||||
|
"start": 14,
|
||||||
|
"end": 15,
|
||||||
|
"value": "]"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "whitespace",
|
||||||
|
"start": 15,
|
||||||
|
"end": 16,
|
||||||
|
"value": "\n"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "word",
|
||||||
|
"start": 16,
|
||||||
|
"end": 25,
|
||||||
|
"value": "pushedArr"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "whitespace",
|
||||||
|
"start": 25,
|
||||||
|
"end": 26,
|
||||||
|
"value": " "
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "operator",
|
||||||
|
"start": 26,
|
||||||
|
"end": 27,
|
||||||
|
"value": "="
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "whitespace",
|
||||||
|
"start": 27,
|
||||||
|
"end": 28,
|
||||||
|
"value": " "
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "word",
|
||||||
|
"start": 28,
|
||||||
|
"end": 32,
|
||||||
|
"value": "push"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "brace",
|
||||||
|
"start": 32,
|
||||||
|
"end": 33,
|
||||||
|
"value": "("
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "word",
|
||||||
|
"start": 33,
|
||||||
|
"end": 36,
|
||||||
|
"value": "arr"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "comma",
|
||||||
|
"start": 36,
|
||||||
|
"end": 37,
|
||||||
|
"value": ","
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "whitespace",
|
||||||
|
"start": 37,
|
||||||
|
"end": 38,
|
||||||
|
"value": " "
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "number",
|
||||||
|
"start": 38,
|
||||||
|
"end": 39,
|
||||||
|
"value": "4"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "brace",
|
||||||
|
"start": 39,
|
||||||
|
"end": 40,
|
||||||
|
"value": ")"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "whitespace",
|
||||||
|
"start": 40,
|
||||||
|
"end": 41,
|
||||||
|
"value": "\n"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "word",
|
||||||
|
"start": 41,
|
||||||
|
"end": 45,
|
||||||
|
"value": "fail"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "whitespace",
|
||||||
|
"start": 45,
|
||||||
|
"end": 46,
|
||||||
|
"value": " "
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "operator",
|
||||||
|
"start": 46,
|
||||||
|
"end": 47,
|
||||||
|
"value": "="
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "whitespace",
|
||||||
|
"start": 47,
|
||||||
|
"end": 48,
|
||||||
|
"value": " "
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "word",
|
||||||
|
"start": 48,
|
||||||
|
"end": 51,
|
||||||
|
"value": "arr"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "brace",
|
||||||
|
"start": 51,
|
||||||
|
"end": 52,
|
||||||
|
"value": "["
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "number",
|
||||||
|
"start": 52,
|
||||||
|
"end": 53,
|
||||||
|
"value": "3"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "brace",
|
||||||
|
"start": 53,
|
||||||
|
"end": 54,
|
||||||
|
"value": "]"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "whitespace",
|
||||||
|
"start": 54,
|
||||||
|
"end": 55,
|
||||||
|
"value": "\n"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
82
src/wasm-lib/kcl/tests/array_index_oob/ast.snap
Normal file
@ -0,0 +1,82 @@
|
|||||||
|
---
|
||||||
|
source: kcl/src/simulation_tests.rs
|
||||||
|
description: Result of parsing array_index_oob.kcl
|
||||||
|
snapshot_kind: text
|
||||||
|
---
|
||||||
|
{
|
||||||
|
"Ok": {
|
||||||
|
"body": [
|
||||||
|
{
|
||||||
|
"declarations": [
|
||||||
|
{
|
||||||
|
"end": 8,
|
||||||
|
"id": {
|
||||||
|
"end": 3,
|
||||||
|
"name": "arr",
|
||||||
|
"start": 0,
|
||||||
|
"type": "Identifier"
|
||||||
|
},
|
||||||
|
"init": {
|
||||||
|
"elements": [],
|
||||||
|
"end": 8,
|
||||||
|
"start": 6,
|
||||||
|
"type": "ArrayExpression",
|
||||||
|
"type": "ArrayExpression"
|
||||||
|
},
|
||||||
|
"start": 0,
|
||||||
|
"type": "VariableDeclarator"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"end": 8,
|
||||||
|
"kind": "const",
|
||||||
|
"start": 0,
|
||||||
|
"type": "VariableDeclaration",
|
||||||
|
"type": "VariableDeclaration"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"declarations": [
|
||||||
|
{
|
||||||
|
"end": 19,
|
||||||
|
"id": {
|
||||||
|
"end": 10,
|
||||||
|
"name": "x",
|
||||||
|
"start": 9,
|
||||||
|
"type": "Identifier"
|
||||||
|
},
|
||||||
|
"init": {
|
||||||
|
"computed": false,
|
||||||
|
"end": 19,
|
||||||
|
"object": {
|
||||||
|
"end": 16,
|
||||||
|
"name": "arr",
|
||||||
|
"start": 13,
|
||||||
|
"type": "Identifier",
|
||||||
|
"type": "Identifier"
|
||||||
|
},
|
||||||
|
"property": {
|
||||||
|
"end": 18,
|
||||||
|
"raw": "0",
|
||||||
|
"start": 17,
|
||||||
|
"type": "Literal",
|
||||||
|
"type": "Literal",
|
||||||
|
"value": 0
|
||||||
|
},
|
||||||
|
"start": 13,
|
||||||
|
"type": "MemberExpression",
|
||||||
|
"type": "MemberExpression"
|
||||||
|
},
|
||||||
|
"start": 9,
|
||||||
|
"type": "VariableDeclarator"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"end": 19,
|
||||||
|
"kind": "const",
|
||||||
|
"start": 9,
|
||||||
|
"type": "VariableDeclaration",
|
||||||
|
"type": "VariableDeclaration"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"end": 20,
|
||||||
|
"start": 0
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -0,0 +1,6 @@
|
|||||||
|
---
|
||||||
|
source: kcl/src/simulation_tests.rs
|
||||||
|
description: Error from executing array_index_oob.kcl
|
||||||
|
snapshot_kind: text
|
||||||
|
---
|
||||||
|
undefined value: KclErrorDetails { source_ranges: [SourceRange([13, 19, 0])], message: "The array doesn't have any item at index 0" }
|
||||||
2
src/wasm-lib/kcl/tests/array_index_oob/input.kcl
Normal file
@ -0,0 +1,2 @@
|
|||||||
|
arr = []
|
||||||
|
x = arr[0]
|
||||||
105
src/wasm-lib/kcl/tests/array_index_oob/tokens.snap
Normal file
@ -0,0 +1,105 @@
|
|||||||
|
---
|
||||||
|
source: kcl/src/simulation_tests.rs
|
||||||
|
description: Result of tokenizing array_index_oob.kcl
|
||||||
|
snapshot_kind: text
|
||||||
|
---
|
||||||
|
{
|
||||||
|
"Ok": [
|
||||||
|
{
|
||||||
|
"type": "word",
|
||||||
|
"start": 0,
|
||||||
|
"end": 3,
|
||||||
|
"value": "arr"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "whitespace",
|
||||||
|
"start": 3,
|
||||||
|
"end": 4,
|
||||||
|
"value": " "
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "operator",
|
||||||
|
"start": 4,
|
||||||
|
"end": 5,
|
||||||
|
"value": "="
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "whitespace",
|
||||||
|
"start": 5,
|
||||||
|
"end": 6,
|
||||||
|
"value": " "
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "brace",
|
||||||
|
"start": 6,
|
||||||
|
"end": 7,
|
||||||
|
"value": "["
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "brace",
|
||||||
|
"start": 7,
|
||||||
|
"end": 8,
|
||||||
|
"value": "]"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "whitespace",
|
||||||
|
"start": 8,
|
||||||
|
"end": 9,
|
||||||
|
"value": "\n"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "word",
|
||||||
|
"start": 9,
|
||||||
|
"end": 10,
|
||||||
|
"value": "x"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "whitespace",
|
||||||
|
"start": 10,
|
||||||
|
"end": 11,
|
||||||
|
"value": " "
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "operator",
|
||||||
|
"start": 11,
|
||||||
|
"end": 12,
|
||||||
|
"value": "="
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "whitespace",
|
||||||
|
"start": 12,
|
||||||
|
"end": 13,
|
||||||
|
"value": " "
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "word",
|
||||||
|
"start": 13,
|
||||||
|
"end": 16,
|
||||||
|
"value": "arr"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "brace",
|
||||||
|
"start": 16,
|
||||||
|
"end": 17,
|
||||||
|
"value": "["
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "number",
|
||||||
|
"start": 17,
|
||||||
|
"end": 18,
|
||||||
|
"value": "0"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "brace",
|
||||||
|
"start": 18,
|
||||||
|
"end": 19,
|
||||||
|
"value": "]"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "whitespace",
|
||||||
|
"start": 19,
|
||||||
|
"end": 20,
|
||||||
|
"value": "\n"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
418
src/wasm-lib/kcl/tests/basic_fillet_cube_close_opposite/ast.snap
Normal file
@ -0,0 +1,418 @@
|
|||||||
|
---
|
||||||
|
source: kcl/src/simulation_tests.rs
|
||||||
|
description: Result of parsing basic_fillet_cube_close_opposite.kcl
|
||||||
|
snapshot_kind: text
|
||||||
|
---
|
||||||
|
{
|
||||||
|
"Ok": {
|
||||||
|
"body": [
|
||||||
|
{
|
||||||
|
"declarations": [
|
||||||
|
{
|
||||||
|
"end": 277,
|
||||||
|
"id": {
|
||||||
|
"end": 7,
|
||||||
|
"name": "part001",
|
||||||
|
"start": 0,
|
||||||
|
"type": "Identifier"
|
||||||
|
},
|
||||||
|
"init": {
|
||||||
|
"body": [
|
||||||
|
{
|
||||||
|
"arguments": [
|
||||||
|
{
|
||||||
|
"end": 28,
|
||||||
|
"raw": "'XY'",
|
||||||
|
"start": 24,
|
||||||
|
"type": "Literal",
|
||||||
|
"type": "Literal",
|
||||||
|
"value": "XY"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"callee": {
|
||||||
|
"end": 23,
|
||||||
|
"name": "startSketchOn",
|
||||||
|
"start": 10,
|
||||||
|
"type": "Identifier"
|
||||||
|
},
|
||||||
|
"end": 29,
|
||||||
|
"optional": false,
|
||||||
|
"start": 10,
|
||||||
|
"type": "CallExpression",
|
||||||
|
"type": "CallExpression"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"arguments": [
|
||||||
|
{
|
||||||
|
"elements": [
|
||||||
|
{
|
||||||
|
"end": 52,
|
||||||
|
"raw": "0",
|
||||||
|
"start": 51,
|
||||||
|
"type": "Literal",
|
||||||
|
"type": "Literal",
|
||||||
|
"value": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"end": 55,
|
||||||
|
"raw": "0",
|
||||||
|
"start": 54,
|
||||||
|
"type": "Literal",
|
||||||
|
"type": "Literal",
|
||||||
|
"value": 0
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"end": 56,
|
||||||
|
"start": 50,
|
||||||
|
"type": "ArrayExpression",
|
||||||
|
"type": "ArrayExpression"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"end": 59,
|
||||||
|
"start": 58,
|
||||||
|
"type": "PipeSubstitution",
|
||||||
|
"type": "PipeSubstitution"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"callee": {
|
||||||
|
"end": 49,
|
||||||
|
"name": "startProfileAt",
|
||||||
|
"start": 35,
|
||||||
|
"type": "Identifier"
|
||||||
|
},
|
||||||
|
"end": 60,
|
||||||
|
"optional": false,
|
||||||
|
"start": 35,
|
||||||
|
"type": "CallExpression",
|
||||||
|
"type": "CallExpression"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"arguments": [
|
||||||
|
{
|
||||||
|
"elements": [
|
||||||
|
{
|
||||||
|
"end": 73,
|
||||||
|
"raw": "0",
|
||||||
|
"start": 72,
|
||||||
|
"type": "Literal",
|
||||||
|
"type": "Literal",
|
||||||
|
"value": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"end": 77,
|
||||||
|
"raw": "10",
|
||||||
|
"start": 75,
|
||||||
|
"type": "Literal",
|
||||||
|
"type": "Literal",
|
||||||
|
"value": 10
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"end": 78,
|
||||||
|
"start": 71,
|
||||||
|
"type": "ArrayExpression",
|
||||||
|
"type": "ArrayExpression"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"end": 81,
|
||||||
|
"start": 80,
|
||||||
|
"type": "PipeSubstitution",
|
||||||
|
"type": "PipeSubstitution"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"end": 89,
|
||||||
|
"start": 83,
|
||||||
|
"type": "TagDeclarator",
|
||||||
|
"type": "TagDeclarator",
|
||||||
|
"value": "thing"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"callee": {
|
||||||
|
"end": 70,
|
||||||
|
"name": "line",
|
||||||
|
"start": 66,
|
||||||
|
"type": "Identifier"
|
||||||
|
},
|
||||||
|
"end": 90,
|
||||||
|
"optional": false,
|
||||||
|
"start": 66,
|
||||||
|
"type": "CallExpression",
|
||||||
|
"type": "CallExpression"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"arguments": [
|
||||||
|
{
|
||||||
|
"elements": [
|
||||||
|
{
|
||||||
|
"end": 104,
|
||||||
|
"raw": "10",
|
||||||
|
"start": 102,
|
||||||
|
"type": "Literal",
|
||||||
|
"type": "Literal",
|
||||||
|
"value": 10
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"end": 107,
|
||||||
|
"raw": "0",
|
||||||
|
"start": 106,
|
||||||
|
"type": "Literal",
|
||||||
|
"type": "Literal",
|
||||||
|
"value": 0
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"end": 108,
|
||||||
|
"start": 101,
|
||||||
|
"type": "ArrayExpression",
|
||||||
|
"type": "ArrayExpression"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"end": 111,
|
||||||
|
"start": 110,
|
||||||
|
"type": "PipeSubstitution",
|
||||||
|
"type": "PipeSubstitution"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"callee": {
|
||||||
|
"end": 100,
|
||||||
|
"name": "line",
|
||||||
|
"start": 96,
|
||||||
|
"type": "Identifier"
|
||||||
|
},
|
||||||
|
"end": 112,
|
||||||
|
"optional": false,
|
||||||
|
"start": 96,
|
||||||
|
"type": "CallExpression",
|
||||||
|
"type": "CallExpression"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"arguments": [
|
||||||
|
{
|
||||||
|
"elements": [
|
||||||
|
{
|
||||||
|
"end": 125,
|
||||||
|
"raw": "0",
|
||||||
|
"start": 124,
|
||||||
|
"type": "Literal",
|
||||||
|
"type": "Literal",
|
||||||
|
"value": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"argument": {
|
||||||
|
"end": 130,
|
||||||
|
"raw": "10",
|
||||||
|
"start": 128,
|
||||||
|
"type": "Literal",
|
||||||
|
"type": "Literal",
|
||||||
|
"value": 10
|
||||||
|
},
|
||||||
|
"end": 130,
|
||||||
|
"operator": "-",
|
||||||
|
"start": 127,
|
||||||
|
"type": "UnaryExpression",
|
||||||
|
"type": "UnaryExpression"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"end": 131,
|
||||||
|
"start": 123,
|
||||||
|
"type": "ArrayExpression",
|
||||||
|
"type": "ArrayExpression"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"end": 134,
|
||||||
|
"start": 133,
|
||||||
|
"type": "PipeSubstitution",
|
||||||
|
"type": "PipeSubstitution"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"end": 143,
|
||||||
|
"start": 136,
|
||||||
|
"type": "TagDeclarator",
|
||||||
|
"type": "TagDeclarator",
|
||||||
|
"value": "thing2"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"callee": {
|
||||||
|
"end": 122,
|
||||||
|
"name": "line",
|
||||||
|
"start": 118,
|
||||||
|
"type": "Identifier"
|
||||||
|
},
|
||||||
|
"end": 144,
|
||||||
|
"optional": false,
|
||||||
|
"start": 118,
|
||||||
|
"type": "CallExpression",
|
||||||
|
"type": "CallExpression"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"arguments": [
|
||||||
|
{
|
||||||
|
"end": 157,
|
||||||
|
"start": 156,
|
||||||
|
"type": "PipeSubstitution",
|
||||||
|
"type": "PipeSubstitution"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"end": 166,
|
||||||
|
"start": 159,
|
||||||
|
"type": "TagDeclarator",
|
||||||
|
"type": "TagDeclarator",
|
||||||
|
"value": "thing3"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"callee": {
|
||||||
|
"end": 155,
|
||||||
|
"name": "close",
|
||||||
|
"start": 150,
|
||||||
|
"type": "Identifier"
|
||||||
|
},
|
||||||
|
"end": 167,
|
||||||
|
"optional": false,
|
||||||
|
"start": 150,
|
||||||
|
"type": "CallExpression",
|
||||||
|
"type": "CallExpression"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"arguments": [
|
||||||
|
{
|
||||||
|
"end": 183,
|
||||||
|
"raw": "10",
|
||||||
|
"start": 181,
|
||||||
|
"type": "Literal",
|
||||||
|
"type": "Literal",
|
||||||
|
"value": 10
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"end": 186,
|
||||||
|
"start": 185,
|
||||||
|
"type": "PipeSubstitution",
|
||||||
|
"type": "PipeSubstitution"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"callee": {
|
||||||
|
"end": 180,
|
||||||
|
"name": "extrude",
|
||||||
|
"start": 173,
|
||||||
|
"type": "Identifier"
|
||||||
|
},
|
||||||
|
"end": 187,
|
||||||
|
"optional": false,
|
||||||
|
"start": 173,
|
||||||
|
"type": "CallExpression",
|
||||||
|
"type": "CallExpression"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"arguments": [
|
||||||
|
{
|
||||||
|
"end": 273,
|
||||||
|
"properties": [
|
||||||
|
{
|
||||||
|
"end": 218,
|
||||||
|
"key": {
|
||||||
|
"end": 215,
|
||||||
|
"name": "radius",
|
||||||
|
"start": 209,
|
||||||
|
"type": "Identifier"
|
||||||
|
},
|
||||||
|
"start": 209,
|
||||||
|
"type": "ObjectProperty",
|
||||||
|
"value": {
|
||||||
|
"end": 218,
|
||||||
|
"raw": "2",
|
||||||
|
"start": 217,
|
||||||
|
"type": "Literal",
|
||||||
|
"type": "Literal",
|
||||||
|
"value": 2
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"end": 266,
|
||||||
|
"key": {
|
||||||
|
"end": 231,
|
||||||
|
"name": "tags",
|
||||||
|
"start": 227,
|
||||||
|
"type": "Identifier"
|
||||||
|
},
|
||||||
|
"start": 227,
|
||||||
|
"type": "ObjectProperty",
|
||||||
|
"value": {
|
||||||
|
"elements": [
|
||||||
|
{
|
||||||
|
"end": 240,
|
||||||
|
"name": "thing3",
|
||||||
|
"start": 234,
|
||||||
|
"type": "Identifier",
|
||||||
|
"type": "Identifier"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"arguments": [
|
||||||
|
{
|
||||||
|
"end": 264,
|
||||||
|
"name": "thing3",
|
||||||
|
"start": 258,
|
||||||
|
"type": "Identifier",
|
||||||
|
"type": "Identifier"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"callee": {
|
||||||
|
"end": 257,
|
||||||
|
"name": "getOppositeEdge",
|
||||||
|
"start": 242,
|
||||||
|
"type": "Identifier"
|
||||||
|
},
|
||||||
|
"end": 265,
|
||||||
|
"optional": false,
|
||||||
|
"start": 242,
|
||||||
|
"type": "CallExpression",
|
||||||
|
"type": "CallExpression"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"end": 266,
|
||||||
|
"start": 233,
|
||||||
|
"type": "ArrayExpression",
|
||||||
|
"type": "ArrayExpression"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"start": 200,
|
||||||
|
"type": "ObjectExpression",
|
||||||
|
"type": "ObjectExpression"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"end": 276,
|
||||||
|
"start": 275,
|
||||||
|
"type": "PipeSubstitution",
|
||||||
|
"type": "PipeSubstitution"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"callee": {
|
||||||
|
"end": 199,
|
||||||
|
"name": "fillet",
|
||||||
|
"start": 193,
|
||||||
|
"type": "Identifier"
|
||||||
|
},
|
||||||
|
"end": 277,
|
||||||
|
"optional": false,
|
||||||
|
"start": 193,
|
||||||
|
"type": "CallExpression",
|
||||||
|
"type": "CallExpression"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"end": 277,
|
||||||
|
"start": 10,
|
||||||
|
"type": "PipeExpression",
|
||||||
|
"type": "PipeExpression"
|
||||||
|
},
|
||||||
|
"start": 0,
|
||||||
|
"type": "VariableDeclarator"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"end": 277,
|
||||||
|
"kind": "const",
|
||||||
|
"start": 0,
|
||||||
|
"type": "VariableDeclaration",
|
||||||
|
"type": "VariableDeclaration"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"end": 278,
|
||||||
|
"start": 0
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -0,0 +1,11 @@
|
|||||||
|
part001 = startSketchOn('XY')
|
||||||
|
|> startProfileAt([0, 0], %)
|
||||||
|
|> line([0, 10], %, $thing)
|
||||||
|
|> line([10, 0], %)
|
||||||
|
|> line([0, -10], %, $thing2)
|
||||||
|
|> close(%, $thing3)
|
||||||
|
|> extrude(10, %)
|
||||||
|
|> fillet({
|
||||||
|
radius: 2,
|
||||||
|
tags: [thing3, getOppositeEdge(thing3)]
|
||||||
|
}, %)
|
||||||
@ -0,0 +1,644 @@
|
|||||||
|
---
|
||||||
|
source: kcl/src/simulation_tests.rs
|
||||||
|
description: Program memory after executing basic_fillet_cube_close_opposite.kcl
|
||||||
|
snapshot_kind: text
|
||||||
|
---
|
||||||
|
{
|
||||||
|
"environments": [
|
||||||
|
{
|
||||||
|
"bindings": {
|
||||||
|
"HALF_TURN": {
|
||||||
|
"type": "Number",
|
||||||
|
"value": 180.0,
|
||||||
|
"__meta": []
|
||||||
|
},
|
||||||
|
"QUARTER_TURN": {
|
||||||
|
"type": "Number",
|
||||||
|
"value": 90.0,
|
||||||
|
"__meta": []
|
||||||
|
},
|
||||||
|
"THREE_QUARTER_TURN": {
|
||||||
|
"type": "Number",
|
||||||
|
"value": 270.0,
|
||||||
|
"__meta": []
|
||||||
|
},
|
||||||
|
"ZERO": {
|
||||||
|
"type": "Number",
|
||||||
|
"value": 0.0,
|
||||||
|
"__meta": []
|
||||||
|
},
|
||||||
|
"part001": {
|
||||||
|
"type": "Solid",
|
||||||
|
"type": "Solid",
|
||||||
|
"id": "[uuid]",
|
||||||
|
"value": [
|
||||||
|
{
|
||||||
|
"faceId": "[uuid]",
|
||||||
|
"id": "[uuid]",
|
||||||
|
"sourceRange": [
|
||||||
|
66,
|
||||||
|
90,
|
||||||
|
0
|
||||||
|
],
|
||||||
|
"tag": {
|
||||||
|
"end": 89,
|
||||||
|
"start": 83,
|
||||||
|
"type": "TagDeclarator",
|
||||||
|
"value": "thing"
|
||||||
|
},
|
||||||
|
"type": "extrudePlane"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"faceId": "[uuid]",
|
||||||
|
"id": "[uuid]",
|
||||||
|
"sourceRange": [
|
||||||
|
96,
|
||||||
|
112,
|
||||||
|
0
|
||||||
|
],
|
||||||
|
"tag": null,
|
||||||
|
"type": "extrudePlane"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"faceId": "[uuid]",
|
||||||
|
"id": "[uuid]",
|
||||||
|
"sourceRange": [
|
||||||
|
118,
|
||||||
|
144,
|
||||||
|
0
|
||||||
|
],
|
||||||
|
"tag": {
|
||||||
|
"end": 143,
|
||||||
|
"start": 136,
|
||||||
|
"type": "TagDeclarator",
|
||||||
|
"value": "thing2"
|
||||||
|
},
|
||||||
|
"type": "extrudePlane"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"faceId": "[uuid]",
|
||||||
|
"id": "[uuid]",
|
||||||
|
"sourceRange": [
|
||||||
|
150,
|
||||||
|
167,
|
||||||
|
0
|
||||||
|
],
|
||||||
|
"tag": {
|
||||||
|
"end": 166,
|
||||||
|
"start": 159,
|
||||||
|
"type": "TagDeclarator",
|
||||||
|
"value": "thing3"
|
||||||
|
},
|
||||||
|
"type": "extrudePlane"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"sketch": {
|
||||||
|
"type": "Sketch",
|
||||||
|
"id": "[uuid]",
|
||||||
|
"paths": [
|
||||||
|
{
|
||||||
|
"__geoMeta": {
|
||||||
|
"id": "[uuid]",
|
||||||
|
"sourceRange": [
|
||||||
|
66,
|
||||||
|
90,
|
||||||
|
0
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"from": [
|
||||||
|
0.0,
|
||||||
|
0.0
|
||||||
|
],
|
||||||
|
"tag": {
|
||||||
|
"end": 89,
|
||||||
|
"start": 83,
|
||||||
|
"type": "TagDeclarator",
|
||||||
|
"value": "thing"
|
||||||
|
},
|
||||||
|
"to": [
|
||||||
|
0.0,
|
||||||
|
10.0
|
||||||
|
],
|
||||||
|
"type": "ToPoint"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"__geoMeta": {
|
||||||
|
"id": "[uuid]",
|
||||||
|
"sourceRange": [
|
||||||
|
96,
|
||||||
|
112,
|
||||||
|
0
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"from": [
|
||||||
|
0.0,
|
||||||
|
10.0
|
||||||
|
],
|
||||||
|
"tag": null,
|
||||||
|
"to": [
|
||||||
|
10.0,
|
||||||
|
10.0
|
||||||
|
],
|
||||||
|
"type": "ToPoint"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"__geoMeta": {
|
||||||
|
"id": "[uuid]",
|
||||||
|
"sourceRange": [
|
||||||
|
118,
|
||||||
|
144,
|
||||||
|
0
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"from": [
|
||||||
|
10.0,
|
||||||
|
10.0
|
||||||
|
],
|
||||||
|
"tag": {
|
||||||
|
"end": 143,
|
||||||
|
"start": 136,
|
||||||
|
"type": "TagDeclarator",
|
||||||
|
"value": "thing2"
|
||||||
|
},
|
||||||
|
"to": [
|
||||||
|
10.0,
|
||||||
|
0.0
|
||||||
|
],
|
||||||
|
"type": "ToPoint"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"__geoMeta": {
|
||||||
|
"id": "[uuid]",
|
||||||
|
"sourceRange": [
|
||||||
|
150,
|
||||||
|
167,
|
||||||
|
0
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"from": [
|
||||||
|
10.0,
|
||||||
|
0.0
|
||||||
|
],
|
||||||
|
"tag": {
|
||||||
|
"end": 166,
|
||||||
|
"start": 159,
|
||||||
|
"type": "TagDeclarator",
|
||||||
|
"value": "thing3"
|
||||||
|
},
|
||||||
|
"to": [
|
||||||
|
0.0,
|
||||||
|
0.0
|
||||||
|
],
|
||||||
|
"type": "ToPoint"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"on": {
|
||||||
|
"type": "plane",
|
||||||
|
"id": "[uuid]",
|
||||||
|
"value": "XY",
|
||||||
|
"origin": {
|
||||||
|
"x": 0.0,
|
||||||
|
"y": 0.0,
|
||||||
|
"z": 0.0
|
||||||
|
},
|
||||||
|
"xAxis": {
|
||||||
|
"x": 1.0,
|
||||||
|
"y": 0.0,
|
||||||
|
"z": 0.0
|
||||||
|
},
|
||||||
|
"yAxis": {
|
||||||
|
"x": 0.0,
|
||||||
|
"y": 1.0,
|
||||||
|
"z": 0.0
|
||||||
|
},
|
||||||
|
"zAxis": {
|
||||||
|
"x": 0.0,
|
||||||
|
"y": 0.0,
|
||||||
|
"z": 1.0
|
||||||
|
},
|
||||||
|
"__meta": []
|
||||||
|
},
|
||||||
|
"start": {
|
||||||
|
"from": [
|
||||||
|
0.0,
|
||||||
|
0.0
|
||||||
|
],
|
||||||
|
"to": [
|
||||||
|
0.0,
|
||||||
|
0.0
|
||||||
|
],
|
||||||
|
"tag": null,
|
||||||
|
"__geoMeta": {
|
||||||
|
"id": "[uuid]",
|
||||||
|
"sourceRange": [
|
||||||
|
35,
|
||||||
|
60,
|
||||||
|
0
|
||||||
|
]
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"tags": {
|
||||||
|
"thing": {
|
||||||
|
"type": "TagIdentifier",
|
||||||
|
"value": "thing",
|
||||||
|
"info": {
|
||||||
|
"type": "TagEngineInfo",
|
||||||
|
"id": "[uuid]",
|
||||||
|
"sketch": "[uuid]",
|
||||||
|
"path": {
|
||||||
|
"__geoMeta": {
|
||||||
|
"id": "[uuid]",
|
||||||
|
"sourceRange": [
|
||||||
|
66,
|
||||||
|
90,
|
||||||
|
0
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"from": [
|
||||||
|
0.0,
|
||||||
|
0.0
|
||||||
|
],
|
||||||
|
"tag": {
|
||||||
|
"end": 89,
|
||||||
|
"start": 83,
|
||||||
|
"type": "TagDeclarator",
|
||||||
|
"value": "thing"
|
||||||
|
},
|
||||||
|
"to": [
|
||||||
|
0.0,
|
||||||
|
10.0
|
||||||
|
],
|
||||||
|
"type": "ToPoint"
|
||||||
|
},
|
||||||
|
"surface": {
|
||||||
|
"faceId": "[uuid]",
|
||||||
|
"id": "[uuid]",
|
||||||
|
"sourceRange": [
|
||||||
|
66,
|
||||||
|
90,
|
||||||
|
0
|
||||||
|
],
|
||||||
|
"tag": {
|
||||||
|
"end": 89,
|
||||||
|
"start": 83,
|
||||||
|
"type": "TagDeclarator",
|
||||||
|
"value": "thing"
|
||||||
|
},
|
||||||
|
"type": "extrudePlane"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"__meta": [
|
||||||
|
{
|
||||||
|
"sourceRange": [
|
||||||
|
83,
|
||||||
|
89,
|
||||||
|
0
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"thing2": {
|
||||||
|
"type": "TagIdentifier",
|
||||||
|
"value": "thing2",
|
||||||
|
"info": {
|
||||||
|
"type": "TagEngineInfo",
|
||||||
|
"id": "[uuid]",
|
||||||
|
"sketch": "[uuid]",
|
||||||
|
"path": {
|
||||||
|
"__geoMeta": {
|
||||||
|
"id": "[uuid]",
|
||||||
|
"sourceRange": [
|
||||||
|
118,
|
||||||
|
144,
|
||||||
|
0
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"from": [
|
||||||
|
10.0,
|
||||||
|
10.0
|
||||||
|
],
|
||||||
|
"tag": {
|
||||||
|
"end": 143,
|
||||||
|
"start": 136,
|
||||||
|
"type": "TagDeclarator",
|
||||||
|
"value": "thing2"
|
||||||
|
},
|
||||||
|
"to": [
|
||||||
|
10.0,
|
||||||
|
0.0
|
||||||
|
],
|
||||||
|
"type": "ToPoint"
|
||||||
|
},
|
||||||
|
"surface": {
|
||||||
|
"faceId": "[uuid]",
|
||||||
|
"id": "[uuid]",
|
||||||
|
"sourceRange": [
|
||||||
|
118,
|
||||||
|
144,
|
||||||
|
0
|
||||||
|
],
|
||||||
|
"tag": {
|
||||||
|
"end": 143,
|
||||||
|
"start": 136,
|
||||||
|
"type": "TagDeclarator",
|
||||||
|
"value": "thing2"
|
||||||
|
},
|
||||||
|
"type": "extrudePlane"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"__meta": [
|
||||||
|
{
|
||||||
|
"sourceRange": [
|
||||||
|
136,
|
||||||
|
143,
|
||||||
|
0
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"thing3": {
|
||||||
|
"type": "TagIdentifier",
|
||||||
|
"value": "thing3",
|
||||||
|
"info": {
|
||||||
|
"type": "TagEngineInfo",
|
||||||
|
"id": "[uuid]",
|
||||||
|
"sketch": "[uuid]",
|
||||||
|
"path": {
|
||||||
|
"__geoMeta": {
|
||||||
|
"id": "[uuid]",
|
||||||
|
"sourceRange": [
|
||||||
|
150,
|
||||||
|
167,
|
||||||
|
0
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"from": [
|
||||||
|
10.0,
|
||||||
|
0.0
|
||||||
|
],
|
||||||
|
"tag": {
|
||||||
|
"end": 166,
|
||||||
|
"start": 159,
|
||||||
|
"type": "TagDeclarator",
|
||||||
|
"value": "thing3"
|
||||||
|
},
|
||||||
|
"to": [
|
||||||
|
0.0,
|
||||||
|
0.0
|
||||||
|
],
|
||||||
|
"type": "ToPoint"
|
||||||
|
},
|
||||||
|
"surface": {
|
||||||
|
"faceId": "[uuid]",
|
||||||
|
"id": "[uuid]",
|
||||||
|
"sourceRange": [
|
||||||
|
150,
|
||||||
|
167,
|
||||||
|
0
|
||||||
|
],
|
||||||
|
"tag": {
|
||||||
|
"end": 166,
|
||||||
|
"start": 159,
|
||||||
|
"type": "TagDeclarator",
|
||||||
|
"value": "thing3"
|
||||||
|
},
|
||||||
|
"type": "extrudePlane"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"__meta": [
|
||||||
|
{
|
||||||
|
"sourceRange": [
|
||||||
|
159,
|
||||||
|
166,
|
||||||
|
0
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"__meta": [
|
||||||
|
{
|
||||||
|
"sourceRange": [
|
||||||
|
35,
|
||||||
|
60,
|
||||||
|
0
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"height": 10.0,
|
||||||
|
"startCapId": "[uuid]",
|
||||||
|
"endCapId": "[uuid]",
|
||||||
|
"edgeCuts": [
|
||||||
|
{
|
||||||
|
"type": "fillet",
|
||||||
|
"id": "[uuid]",
|
||||||
|
"radius": 2.0,
|
||||||
|
"edgeId": "[uuid]",
|
||||||
|
"tag": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "fillet",
|
||||||
|
"id": "[uuid]",
|
||||||
|
"radius": 2.0,
|
||||||
|
"edgeId": "[uuid]",
|
||||||
|
"tag": null
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"__meta": [
|
||||||
|
{
|
||||||
|
"sourceRange": [
|
||||||
|
35,
|
||||||
|
60,
|
||||||
|
0
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"thing": {
|
||||||
|
"type": "TagIdentifier",
|
||||||
|
"type": "TagIdentifier",
|
||||||
|
"value": "thing",
|
||||||
|
"info": {
|
||||||
|
"type": "TagEngineInfo",
|
||||||
|
"id": "[uuid]",
|
||||||
|
"sketch": "[uuid]",
|
||||||
|
"path": {
|
||||||
|
"__geoMeta": {
|
||||||
|
"id": "[uuid]",
|
||||||
|
"sourceRange": [
|
||||||
|
66,
|
||||||
|
90,
|
||||||
|
0
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"from": [
|
||||||
|
0.0,
|
||||||
|
0.0
|
||||||
|
],
|
||||||
|
"tag": {
|
||||||
|
"end": 89,
|
||||||
|
"start": 83,
|
||||||
|
"type": "TagDeclarator",
|
||||||
|
"value": "thing"
|
||||||
|
},
|
||||||
|
"to": [
|
||||||
|
0.0,
|
||||||
|
10.0
|
||||||
|
],
|
||||||
|
"type": "ToPoint"
|
||||||
|
},
|
||||||
|
"surface": {
|
||||||
|
"faceId": "[uuid]",
|
||||||
|
"id": "[uuid]",
|
||||||
|
"sourceRange": [
|
||||||
|
66,
|
||||||
|
90,
|
||||||
|
0
|
||||||
|
],
|
||||||
|
"tag": {
|
||||||
|
"end": 89,
|
||||||
|
"start": 83,
|
||||||
|
"type": "TagDeclarator",
|
||||||
|
"value": "thing"
|
||||||
|
},
|
||||||
|
"type": "extrudePlane"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"__meta": [
|
||||||
|
{
|
||||||
|
"sourceRange": [
|
||||||
|
83,
|
||||||
|
89,
|
||||||
|
0
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"thing2": {
|
||||||
|
"type": "TagIdentifier",
|
||||||
|
"type": "TagIdentifier",
|
||||||
|
"value": "thing2",
|
||||||
|
"info": {
|
||||||
|
"type": "TagEngineInfo",
|
||||||
|
"id": "[uuid]",
|
||||||
|
"sketch": "[uuid]",
|
||||||
|
"path": {
|
||||||
|
"__geoMeta": {
|
||||||
|
"id": "[uuid]",
|
||||||
|
"sourceRange": [
|
||||||
|
118,
|
||||||
|
144,
|
||||||
|
0
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"from": [
|
||||||
|
10.0,
|
||||||
|
10.0
|
||||||
|
],
|
||||||
|
"tag": {
|
||||||
|
"end": 143,
|
||||||
|
"start": 136,
|
||||||
|
"type": "TagDeclarator",
|
||||||
|
"value": "thing2"
|
||||||
|
},
|
||||||
|
"to": [
|
||||||
|
10.0,
|
||||||
|
0.0
|
||||||
|
],
|
||||||
|
"type": "ToPoint"
|
||||||
|
},
|
||||||
|
"surface": {
|
||||||
|
"faceId": "[uuid]",
|
||||||
|
"id": "[uuid]",
|
||||||
|
"sourceRange": [
|
||||||
|
118,
|
||||||
|
144,
|
||||||
|
0
|
||||||
|
],
|
||||||
|
"tag": {
|
||||||
|
"end": 143,
|
||||||
|
"start": 136,
|
||||||
|
"type": "TagDeclarator",
|
||||||
|
"value": "thing2"
|
||||||
|
},
|
||||||
|
"type": "extrudePlane"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"__meta": [
|
||||||
|
{
|
||||||
|
"sourceRange": [
|
||||||
|
136,
|
||||||
|
143,
|
||||||
|
0
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"thing3": {
|
||||||
|
"type": "TagIdentifier",
|
||||||
|
"type": "TagIdentifier",
|
||||||
|
"value": "thing3",
|
||||||
|
"info": {
|
||||||
|
"type": "TagEngineInfo",
|
||||||
|
"id": "[uuid]",
|
||||||
|
"sketch": "[uuid]",
|
||||||
|
"path": {
|
||||||
|
"__geoMeta": {
|
||||||
|
"id": "[uuid]",
|
||||||
|
"sourceRange": [
|
||||||
|
150,
|
||||||
|
167,
|
||||||
|
0
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"from": [
|
||||||
|
10.0,
|
||||||
|
0.0
|
||||||
|
],
|
||||||
|
"tag": {
|
||||||
|
"end": 166,
|
||||||
|
"start": 159,
|
||||||
|
"type": "TagDeclarator",
|
||||||
|
"value": "thing3"
|
||||||
|
},
|
||||||
|
"to": [
|
||||||
|
0.0,
|
||||||
|
0.0
|
||||||
|
],
|
||||||
|
"type": "ToPoint"
|
||||||
|
},
|
||||||
|
"surface": {
|
||||||
|
"faceId": "[uuid]",
|
||||||
|
"id": "[uuid]",
|
||||||
|
"sourceRange": [
|
||||||
|
150,
|
||||||
|
167,
|
||||||
|
0
|
||||||
|
],
|
||||||
|
"tag": {
|
||||||
|
"end": 166,
|
||||||
|
"start": 159,
|
||||||
|
"type": "TagDeclarator",
|
||||||
|
"value": "thing3"
|
||||||
|
},
|
||||||
|
"type": "extrudePlane"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"__meta": [
|
||||||
|
{
|
||||||
|
"sourceRange": [
|
||||||
|
159,
|
||||||
|
166,
|
||||||
|
0
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"parent": null
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"currentEnv": 0,
|
||||||
|
"return": null
|
||||||
|
}
|
||||||
|
After Width: | Height: | Size: 92 KiB |
@ -0,0 +1,789 @@
|
|||||||
|
---
|
||||||
|
source: kcl/src/simulation_tests.rs
|
||||||
|
description: Result of tokenizing basic_fillet_cube_close_opposite.kcl
|
||||||
|
snapshot_kind: text
|
||||||
|
---
|
||||||
|
{
|
||||||
|
"Ok": [
|
||||||
|
{
|
||||||
|
"type": "word",
|
||||||
|
"start": 0,
|
||||||
|
"end": 7,
|
||||||
|
"value": "part001"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "whitespace",
|
||||||
|
"start": 7,
|
||||||
|
"end": 8,
|
||||||
|
"value": " "
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "operator",
|
||||||
|
"start": 8,
|
||||||
|
"end": 9,
|
||||||
|
"value": "="
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "whitespace",
|
||||||
|
"start": 9,
|
||||||
|
"end": 10,
|
||||||
|
"value": " "
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "word",
|
||||||
|
"start": 10,
|
||||||
|
"end": 23,
|
||||||
|
"value": "startSketchOn"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "brace",
|
||||||
|
"start": 23,
|
||||||
|
"end": 24,
|
||||||
|
"value": "("
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "string",
|
||||||
|
"start": 24,
|
||||||
|
"end": 28,
|
||||||
|
"value": "'XY'"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "brace",
|
||||||
|
"start": 28,
|
||||||
|
"end": 29,
|
||||||
|
"value": ")"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "whitespace",
|
||||||
|
"start": 29,
|
||||||
|
"end": 32,
|
||||||
|
"value": "\n "
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "operator",
|
||||||
|
"start": 32,
|
||||||
|
"end": 34,
|
||||||
|
"value": "|>"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "whitespace",
|
||||||
|
"start": 34,
|
||||||
|
"end": 35,
|
||||||
|
"value": " "
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "word",
|
||||||
|
"start": 35,
|
||||||
|
"end": 49,
|
||||||
|
"value": "startProfileAt"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "brace",
|
||||||
|
"start": 49,
|
||||||
|
"end": 50,
|
||||||
|
"value": "("
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "brace",
|
||||||
|
"start": 50,
|
||||||
|
"end": 51,
|
||||||
|
"value": "["
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "number",
|
||||||
|
"start": 51,
|
||||||
|
"end": 52,
|
||||||
|
"value": "0"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "comma",
|
||||||
|
"start": 52,
|
||||||
|
"end": 53,
|
||||||
|
"value": ","
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "whitespace",
|
||||||
|
"start": 53,
|
||||||
|
"end": 54,
|
||||||
|
"value": " "
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "number",
|
||||||
|
"start": 54,
|
||||||
|
"end": 55,
|
||||||
|
"value": "0"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "brace",
|
||||||
|
"start": 55,
|
||||||
|
"end": 56,
|
||||||
|
"value": "]"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "comma",
|
||||||
|
"start": 56,
|
||||||
|
"end": 57,
|
||||||
|
"value": ","
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "whitespace",
|
||||||
|
"start": 57,
|
||||||
|
"end": 58,
|
||||||
|
"value": " "
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "operator",
|
||||||
|
"start": 58,
|
||||||
|
"end": 59,
|
||||||
|
"value": "%"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "brace",
|
||||||
|
"start": 59,
|
||||||
|
"end": 60,
|
||||||
|
"value": ")"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "whitespace",
|
||||||
|
"start": 60,
|
||||||
|
"end": 63,
|
||||||
|
"value": "\n "
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "operator",
|
||||||
|
"start": 63,
|
||||||
|
"end": 65,
|
||||||
|
"value": "|>"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "whitespace",
|
||||||
|
"start": 65,
|
||||||
|
"end": 66,
|
||||||
|
"value": " "
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "word",
|
||||||
|
"start": 66,
|
||||||
|
"end": 70,
|
||||||
|
"value": "line"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "brace",
|
||||||
|
"start": 70,
|
||||||
|
"end": 71,
|
||||||
|
"value": "("
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "brace",
|
||||||
|
"start": 71,
|
||||||
|
"end": 72,
|
||||||
|
"value": "["
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "number",
|
||||||
|
"start": 72,
|
||||||
|
"end": 73,
|
||||||
|
"value": "0"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "comma",
|
||||||
|
"start": 73,
|
||||||
|
"end": 74,
|
||||||
|
"value": ","
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "whitespace",
|
||||||
|
"start": 74,
|
||||||
|
"end": 75,
|
||||||
|
"value": " "
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "number",
|
||||||
|
"start": 75,
|
||||||
|
"end": 77,
|
||||||
|
"value": "10"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "brace",
|
||||||
|
"start": 77,
|
||||||
|
"end": 78,
|
||||||
|
"value": "]"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "comma",
|
||||||
|
"start": 78,
|
||||||
|
"end": 79,
|
||||||
|
"value": ","
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "whitespace",
|
||||||
|
"start": 79,
|
||||||
|
"end": 80,
|
||||||
|
"value": " "
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "operator",
|
||||||
|
"start": 80,
|
||||||
|
"end": 81,
|
||||||
|
"value": "%"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "comma",
|
||||||
|
"start": 81,
|
||||||
|
"end": 82,
|
||||||
|
"value": ","
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "whitespace",
|
||||||
|
"start": 82,
|
||||||
|
"end": 83,
|
||||||
|
"value": " "
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "dollar",
|
||||||
|
"start": 83,
|
||||||
|
"end": 84,
|
||||||
|
"value": "$"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "word",
|
||||||
|
"start": 84,
|
||||||
|
"end": 89,
|
||||||
|
"value": "thing"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "brace",
|
||||||
|
"start": 89,
|
||||||
|
"end": 90,
|
||||||
|
"value": ")"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "whitespace",
|
||||||
|
"start": 90,
|
||||||
|
"end": 93,
|
||||||
|
"value": "\n "
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "operator",
|
||||||
|
"start": 93,
|
||||||
|
"end": 95,
|
||||||
|
"value": "|>"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "whitespace",
|
||||||
|
"start": 95,
|
||||||
|
"end": 96,
|
||||||
|
"value": " "
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "word",
|
||||||
|
"start": 96,
|
||||||
|
"end": 100,
|
||||||
|
"value": "line"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "brace",
|
||||||
|
"start": 100,
|
||||||
|
"end": 101,
|
||||||
|
"value": "("
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "brace",
|
||||||
|
"start": 101,
|
||||||
|
"end": 102,
|
||||||
|
"value": "["
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "number",
|
||||||
|
"start": 102,
|
||||||
|
"end": 104,
|
||||||
|
"value": "10"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "comma",
|
||||||
|
"start": 104,
|
||||||
|
"end": 105,
|
||||||
|
"value": ","
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "whitespace",
|
||||||
|
"start": 105,
|
||||||
|
"end": 106,
|
||||||
|
"value": " "
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "number",
|
||||||
|
"start": 106,
|
||||||
|
"end": 107,
|
||||||
|
"value": "0"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "brace",
|
||||||
|
"start": 107,
|
||||||
|
"end": 108,
|
||||||
|
"value": "]"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "comma",
|
||||||
|
"start": 108,
|
||||||
|
"end": 109,
|
||||||
|
"value": ","
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "whitespace",
|
||||||
|
"start": 109,
|
||||||
|
"end": 110,
|
||||||
|
"value": " "
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "operator",
|
||||||
|
"start": 110,
|
||||||
|
"end": 111,
|
||||||
|
"value": "%"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "brace",
|
||||||
|
"start": 111,
|
||||||
|
"end": 112,
|
||||||
|
"value": ")"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "whitespace",
|
||||||
|
"start": 112,
|
||||||
|
"end": 115,
|
||||||
|
"value": "\n "
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "operator",
|
||||||
|
"start": 115,
|
||||||
|
"end": 117,
|
||||||
|
"value": "|>"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "whitespace",
|
||||||
|
"start": 117,
|
||||||
|
"end": 118,
|
||||||
|
"value": " "
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "word",
|
||||||
|
"start": 118,
|
||||||
|
"end": 122,
|
||||||
|
"value": "line"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "brace",
|
||||||
|
"start": 122,
|
||||||
|
"end": 123,
|
||||||
|
"value": "("
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "brace",
|
||||||
|
"start": 123,
|
||||||
|
"end": 124,
|
||||||
|
"value": "["
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "number",
|
||||||
|
"start": 124,
|
||||||
|
"end": 125,
|
||||||
|
"value": "0"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "comma",
|
||||||
|
"start": 125,
|
||||||
|
"end": 126,
|
||||||
|
"value": ","
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "whitespace",
|
||||||
|
"start": 126,
|
||||||
|
"end": 127,
|
||||||
|
"value": " "
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "operator",
|
||||||
|
"start": 127,
|
||||||
|
"end": 128,
|
||||||
|
"value": "-"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "number",
|
||||||
|
"start": 128,
|
||||||
|
"end": 130,
|
||||||
|
"value": "10"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "brace",
|
||||||
|
"start": 130,
|
||||||
|
"end": 131,
|
||||||
|
"value": "]"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "comma",
|
||||||
|
"start": 131,
|
||||||
|
"end": 132,
|
||||||
|
"value": ","
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "whitespace",
|
||||||
|
"start": 132,
|
||||||
|
"end": 133,
|
||||||
|
"value": " "
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "operator",
|
||||||
|
"start": 133,
|
||||||
|
"end": 134,
|
||||||
|
"value": "%"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "comma",
|
||||||
|
"start": 134,
|
||||||
|
"end": 135,
|
||||||
|
"value": ","
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "whitespace",
|
||||||
|
"start": 135,
|
||||||
|
"end": 136,
|
||||||
|
"value": " "
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "dollar",
|
||||||
|
"start": 136,
|
||||||
|
"end": 137,
|
||||||
|
"value": "$"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "word",
|
||||||
|
"start": 137,
|
||||||
|
"end": 143,
|
||||||
|
"value": "thing2"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "brace",
|
||||||
|
"start": 143,
|
||||||
|
"end": 144,
|
||||||
|
"value": ")"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "whitespace",
|
||||||
|
"start": 144,
|
||||||
|
"end": 147,
|
||||||
|
"value": "\n "
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "operator",
|
||||||
|
"start": 147,
|
||||||
|
"end": 149,
|
||||||
|
"value": "|>"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "whitespace",
|
||||||
|
"start": 149,
|
||||||
|
"end": 150,
|
||||||
|
"value": " "
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "word",
|
||||||
|
"start": 150,
|
||||||
|
"end": 155,
|
||||||
|
"value": "close"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "brace",
|
||||||
|
"start": 155,
|
||||||
|
"end": 156,
|
||||||
|
"value": "("
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "operator",
|
||||||
|
"start": 156,
|
||||||
|
"end": 157,
|
||||||
|
"value": "%"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "comma",
|
||||||
|
"start": 157,
|
||||||
|
"end": 158,
|
||||||
|
"value": ","
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "whitespace",
|
||||||
|
"start": 158,
|
||||||
|
"end": 159,
|
||||||
|
"value": " "
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "dollar",
|
||||||
|
"start": 159,
|
||||||
|
"end": 160,
|
||||||
|
"value": "$"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "word",
|
||||||
|
"start": 160,
|
||||||
|
"end": 166,
|
||||||
|
"value": "thing3"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "brace",
|
||||||
|
"start": 166,
|
||||||
|
"end": 167,
|
||||||
|
"value": ")"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "whitespace",
|
||||||
|
"start": 167,
|
||||||
|
"end": 170,
|
||||||
|
"value": "\n "
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "operator",
|
||||||
|
"start": 170,
|
||||||
|
"end": 172,
|
||||||
|
"value": "|>"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "whitespace",
|
||||||
|
"start": 172,
|
||||||
|
"end": 173,
|
||||||
|
"value": " "
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "word",
|
||||||
|
"start": 173,
|
||||||
|
"end": 180,
|
||||||
|
"value": "extrude"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "brace",
|
||||||
|
"start": 180,
|
||||||
|
"end": 181,
|
||||||
|
"value": "("
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "number",
|
||||||
|
"start": 181,
|
||||||
|
"end": 183,
|
||||||
|
"value": "10"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "comma",
|
||||||
|
"start": 183,
|
||||||
|
"end": 184,
|
||||||
|
"value": ","
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "whitespace",
|
||||||
|
"start": 184,
|
||||||
|
"end": 185,
|
||||||
|
"value": " "
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "operator",
|
||||||
|
"start": 185,
|
||||||
|
"end": 186,
|
||||||
|
"value": "%"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "brace",
|
||||||
|
"start": 186,
|
||||||
|
"end": 187,
|
||||||
|
"value": ")"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "whitespace",
|
||||||
|
"start": 187,
|
||||||
|
"end": 190,
|
||||||
|
"value": "\n "
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "operator",
|
||||||
|
"start": 190,
|
||||||
|
"end": 192,
|
||||||
|
"value": "|>"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "whitespace",
|
||||||
|
"start": 192,
|
||||||
|
"end": 193,
|
||||||
|
"value": " "
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "word",
|
||||||
|
"start": 193,
|
||||||
|
"end": 199,
|
||||||
|
"value": "fillet"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "brace",
|
||||||
|
"start": 199,
|
||||||
|
"end": 200,
|
||||||
|
"value": "("
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "brace",
|
||||||
|
"start": 200,
|
||||||
|
"end": 201,
|
||||||
|
"value": "{"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "whitespace",
|
||||||
|
"start": 201,
|
||||||
|
"end": 209,
|
||||||
|
"value": "\n "
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "word",
|
||||||
|
"start": 209,
|
||||||
|
"end": 215,
|
||||||
|
"value": "radius"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "colon",
|
||||||
|
"start": 215,
|
||||||
|
"end": 216,
|
||||||
|
"value": ":"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "whitespace",
|
||||||
|
"start": 216,
|
||||||
|
"end": 217,
|
||||||
|
"value": " "
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "number",
|
||||||
|
"start": 217,
|
||||||
|
"end": 218,
|
||||||
|
"value": "2"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "comma",
|
||||||
|
"start": 218,
|
||||||
|
"end": 219,
|
||||||
|
"value": ","
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "whitespace",
|
||||||
|
"start": 219,
|
||||||
|
"end": 227,
|
||||||
|
"value": "\n "
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "word",
|
||||||
|
"start": 227,
|
||||||
|
"end": 231,
|
||||||
|
"value": "tags"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "colon",
|
||||||
|
"start": 231,
|
||||||
|
"end": 232,
|
||||||
|
"value": ":"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "whitespace",
|
||||||
|
"start": 232,
|
||||||
|
"end": 233,
|
||||||
|
"value": " "
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "brace",
|
||||||
|
"start": 233,
|
||||||
|
"end": 234,
|
||||||
|
"value": "["
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "word",
|
||||||
|
"start": 234,
|
||||||
|
"end": 240,
|
||||||
|
"value": "thing3"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "comma",
|
||||||
|
"start": 240,
|
||||||
|
"end": 241,
|
||||||
|
"value": ","
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "whitespace",
|
||||||
|
"start": 241,
|
||||||
|
"end": 242,
|
||||||
|
"value": " "
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "word",
|
||||||
|
"start": 242,
|
||||||
|
"end": 257,
|
||||||
|
"value": "getOppositeEdge"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "brace",
|
||||||
|
"start": 257,
|
||||||
|
"end": 258,
|
||||||
|
"value": "("
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "word",
|
||||||
|
"start": 258,
|
||||||
|
"end": 264,
|
||||||
|
"value": "thing3"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "brace",
|
||||||
|
"start": 264,
|
||||||
|
"end": 265,
|
||||||
|
"value": ")"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "brace",
|
||||||
|
"start": 265,
|
||||||
|
"end": 266,
|
||||||
|
"value": "]"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "whitespace",
|
||||||
|
"start": 266,
|
||||||
|
"end": 272,
|
||||||
|
"value": "\n "
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "brace",
|
||||||
|
"start": 272,
|
||||||
|
"end": 273,
|
||||||
|
"value": "}"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "comma",
|
||||||
|
"start": 273,
|
||||||
|
"end": 274,
|
||||||
|
"value": ","
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "whitespace",
|
||||||
|
"start": 274,
|
||||||
|
"end": 275,
|
||||||
|
"value": " "
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "operator",
|
||||||
|
"start": 275,
|
||||||
|
"end": 276,
|
||||||
|
"value": "%"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "brace",
|
||||||
|
"start": 276,
|
||||||
|
"end": 277,
|
||||||
|
"value": ")"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "whitespace",
|
||||||
|
"start": 277,
|
||||||
|
"end": 278,
|
||||||
|
"value": "\n"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
411
src/wasm-lib/kcl/tests/basic_fillet_cube_end/ast.snap
Normal file
@ -0,0 +1,411 @@
|
|||||||
|
---
|
||||||
|
source: kcl/src/simulation_tests.rs
|
||||||
|
description: Result of parsing basic_fillet_cube_end.kcl
|
||||||
|
snapshot_kind: text
|
||||||
|
---
|
||||||
|
{
|
||||||
|
"Ok": {
|
||||||
|
"body": [
|
||||||
|
{
|
||||||
|
"declarations": [
|
||||||
|
{
|
||||||
|
"end": 266,
|
||||||
|
"id": {
|
||||||
|
"end": 7,
|
||||||
|
"name": "part001",
|
||||||
|
"start": 0,
|
||||||
|
"type": "Identifier"
|
||||||
|
},
|
||||||
|
"init": {
|
||||||
|
"body": [
|
||||||
|
{
|
||||||
|
"arguments": [
|
||||||
|
{
|
||||||
|
"end": 28,
|
||||||
|
"raw": "'XY'",
|
||||||
|
"start": 24,
|
||||||
|
"type": "Literal",
|
||||||
|
"type": "Literal",
|
||||||
|
"value": "XY"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"callee": {
|
||||||
|
"end": 23,
|
||||||
|
"name": "startSketchOn",
|
||||||
|
"start": 10,
|
||||||
|
"type": "Identifier"
|
||||||
|
},
|
||||||
|
"end": 29,
|
||||||
|
"optional": false,
|
||||||
|
"start": 10,
|
||||||
|
"type": "CallExpression",
|
||||||
|
"type": "CallExpression"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"arguments": [
|
||||||
|
{
|
||||||
|
"elements": [
|
||||||
|
{
|
||||||
|
"end": 52,
|
||||||
|
"raw": "0",
|
||||||
|
"start": 51,
|
||||||
|
"type": "Literal",
|
||||||
|
"type": "Literal",
|
||||||
|
"value": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"end": 55,
|
||||||
|
"raw": "0",
|
||||||
|
"start": 54,
|
||||||
|
"type": "Literal",
|
||||||
|
"type": "Literal",
|
||||||
|
"value": 0
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"end": 56,
|
||||||
|
"start": 50,
|
||||||
|
"type": "ArrayExpression",
|
||||||
|
"type": "ArrayExpression"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"end": 59,
|
||||||
|
"start": 58,
|
||||||
|
"type": "PipeSubstitution",
|
||||||
|
"type": "PipeSubstitution"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"callee": {
|
||||||
|
"end": 49,
|
||||||
|
"name": "startProfileAt",
|
||||||
|
"start": 35,
|
||||||
|
"type": "Identifier"
|
||||||
|
},
|
||||||
|
"end": 60,
|
||||||
|
"optional": false,
|
||||||
|
"start": 35,
|
||||||
|
"type": "CallExpression",
|
||||||
|
"type": "CallExpression"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"arguments": [
|
||||||
|
{
|
||||||
|
"elements": [
|
||||||
|
{
|
||||||
|
"end": 73,
|
||||||
|
"raw": "0",
|
||||||
|
"start": 72,
|
||||||
|
"type": "Literal",
|
||||||
|
"type": "Literal",
|
||||||
|
"value": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"end": 77,
|
||||||
|
"raw": "10",
|
||||||
|
"start": 75,
|
||||||
|
"type": "Literal",
|
||||||
|
"type": "Literal",
|
||||||
|
"value": 10
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"end": 78,
|
||||||
|
"start": 71,
|
||||||
|
"type": "ArrayExpression",
|
||||||
|
"type": "ArrayExpression"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"end": 81,
|
||||||
|
"start": 80,
|
||||||
|
"type": "PipeSubstitution",
|
||||||
|
"type": "PipeSubstitution"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"end": 89,
|
||||||
|
"start": 83,
|
||||||
|
"type": "TagDeclarator",
|
||||||
|
"type": "TagDeclarator",
|
||||||
|
"value": "thing"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"callee": {
|
||||||
|
"end": 70,
|
||||||
|
"name": "line",
|
||||||
|
"start": 66,
|
||||||
|
"type": "Identifier"
|
||||||
|
},
|
||||||
|
"end": 90,
|
||||||
|
"optional": false,
|
||||||
|
"start": 66,
|
||||||
|
"type": "CallExpression",
|
||||||
|
"type": "CallExpression"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"arguments": [
|
||||||
|
{
|
||||||
|
"elements": [
|
||||||
|
{
|
||||||
|
"end": 104,
|
||||||
|
"raw": "10",
|
||||||
|
"start": 102,
|
||||||
|
"type": "Literal",
|
||||||
|
"type": "Literal",
|
||||||
|
"value": 10
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"end": 107,
|
||||||
|
"raw": "0",
|
||||||
|
"start": 106,
|
||||||
|
"type": "Literal",
|
||||||
|
"type": "Literal",
|
||||||
|
"value": 0
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"end": 108,
|
||||||
|
"start": 101,
|
||||||
|
"type": "ArrayExpression",
|
||||||
|
"type": "ArrayExpression"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"end": 111,
|
||||||
|
"start": 110,
|
||||||
|
"type": "PipeSubstitution",
|
||||||
|
"type": "PipeSubstitution"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"callee": {
|
||||||
|
"end": 100,
|
||||||
|
"name": "line",
|
||||||
|
"start": 96,
|
||||||
|
"type": "Identifier"
|
||||||
|
},
|
||||||
|
"end": 112,
|
||||||
|
"optional": false,
|
||||||
|
"start": 96,
|
||||||
|
"type": "CallExpression",
|
||||||
|
"type": "CallExpression"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"arguments": [
|
||||||
|
{
|
||||||
|
"elements": [
|
||||||
|
{
|
||||||
|
"end": 125,
|
||||||
|
"raw": "0",
|
||||||
|
"start": 124,
|
||||||
|
"type": "Literal",
|
||||||
|
"type": "Literal",
|
||||||
|
"value": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"argument": {
|
||||||
|
"end": 130,
|
||||||
|
"raw": "10",
|
||||||
|
"start": 128,
|
||||||
|
"type": "Literal",
|
||||||
|
"type": "Literal",
|
||||||
|
"value": 10
|
||||||
|
},
|
||||||
|
"end": 130,
|
||||||
|
"operator": "-",
|
||||||
|
"start": 127,
|
||||||
|
"type": "UnaryExpression",
|
||||||
|
"type": "UnaryExpression"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"end": 131,
|
||||||
|
"start": 123,
|
||||||
|
"type": "ArrayExpression",
|
||||||
|
"type": "ArrayExpression"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"end": 134,
|
||||||
|
"start": 133,
|
||||||
|
"type": "PipeSubstitution",
|
||||||
|
"type": "PipeSubstitution"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"end": 143,
|
||||||
|
"start": 136,
|
||||||
|
"type": "TagDeclarator",
|
||||||
|
"type": "TagDeclarator",
|
||||||
|
"value": "thing2"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"callee": {
|
||||||
|
"end": 122,
|
||||||
|
"name": "line",
|
||||||
|
"start": 118,
|
||||||
|
"type": "Identifier"
|
||||||
|
},
|
||||||
|
"end": 144,
|
||||||
|
"optional": false,
|
||||||
|
"start": 118,
|
||||||
|
"type": "CallExpression",
|
||||||
|
"type": "CallExpression"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"arguments": [
|
||||||
|
{
|
||||||
|
"end": 157,
|
||||||
|
"start": 156,
|
||||||
|
"type": "PipeSubstitution",
|
||||||
|
"type": "PipeSubstitution"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"callee": {
|
||||||
|
"end": 155,
|
||||||
|
"name": "close",
|
||||||
|
"start": 150,
|
||||||
|
"type": "Identifier"
|
||||||
|
},
|
||||||
|
"end": 158,
|
||||||
|
"optional": false,
|
||||||
|
"start": 150,
|
||||||
|
"type": "CallExpression",
|
||||||
|
"type": "CallExpression"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"arguments": [
|
||||||
|
{
|
||||||
|
"end": 174,
|
||||||
|
"raw": "10",
|
||||||
|
"start": 172,
|
||||||
|
"type": "Literal",
|
||||||
|
"type": "Literal",
|
||||||
|
"value": 10
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"end": 177,
|
||||||
|
"start": 176,
|
||||||
|
"type": "PipeSubstitution",
|
||||||
|
"type": "PipeSubstitution"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"callee": {
|
||||||
|
"end": 171,
|
||||||
|
"name": "extrude",
|
||||||
|
"start": 164,
|
||||||
|
"type": "Identifier"
|
||||||
|
},
|
||||||
|
"end": 178,
|
||||||
|
"optional": false,
|
||||||
|
"start": 164,
|
||||||
|
"type": "CallExpression",
|
||||||
|
"type": "CallExpression"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"arguments": [
|
||||||
|
{
|
||||||
|
"end": 262,
|
||||||
|
"properties": [
|
||||||
|
{
|
||||||
|
"end": 209,
|
||||||
|
"key": {
|
||||||
|
"end": 206,
|
||||||
|
"name": "radius",
|
||||||
|
"start": 200,
|
||||||
|
"type": "Identifier"
|
||||||
|
},
|
||||||
|
"start": 200,
|
||||||
|
"type": "ObjectProperty",
|
||||||
|
"value": {
|
||||||
|
"end": 209,
|
||||||
|
"raw": "2",
|
||||||
|
"start": 208,
|
||||||
|
"type": "Literal",
|
||||||
|
"type": "Literal",
|
||||||
|
"value": 2
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"end": 255,
|
||||||
|
"key": {
|
||||||
|
"end": 222,
|
||||||
|
"name": "tags",
|
||||||
|
"start": 218,
|
||||||
|
"type": "Identifier"
|
||||||
|
},
|
||||||
|
"start": 218,
|
||||||
|
"type": "ObjectProperty",
|
||||||
|
"value": {
|
||||||
|
"elements": [
|
||||||
|
{
|
||||||
|
"end": 230,
|
||||||
|
"name": "thing",
|
||||||
|
"start": 225,
|
||||||
|
"type": "Identifier",
|
||||||
|
"type": "Identifier"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"arguments": [
|
||||||
|
{
|
||||||
|
"end": 253,
|
||||||
|
"name": "thing",
|
||||||
|
"start": 248,
|
||||||
|
"type": "Identifier",
|
||||||
|
"type": "Identifier"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"callee": {
|
||||||
|
"end": 247,
|
||||||
|
"name": "getOppositeEdge",
|
||||||
|
"start": 232,
|
||||||
|
"type": "Identifier"
|
||||||
|
},
|
||||||
|
"end": 254,
|
||||||
|
"optional": false,
|
||||||
|
"start": 232,
|
||||||
|
"type": "CallExpression",
|
||||||
|
"type": "CallExpression"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"end": 255,
|
||||||
|
"start": 224,
|
||||||
|
"type": "ArrayExpression",
|
||||||
|
"type": "ArrayExpression"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"start": 191,
|
||||||
|
"type": "ObjectExpression",
|
||||||
|
"type": "ObjectExpression"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"end": 265,
|
||||||
|
"start": 264,
|
||||||
|
"type": "PipeSubstitution",
|
||||||
|
"type": "PipeSubstitution"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"callee": {
|
||||||
|
"end": 190,
|
||||||
|
"name": "fillet",
|
||||||
|
"start": 184,
|
||||||
|
"type": "Identifier"
|
||||||
|
},
|
||||||
|
"end": 266,
|
||||||
|
"optional": false,
|
||||||
|
"start": 184,
|
||||||
|
"type": "CallExpression",
|
||||||
|
"type": "CallExpression"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"end": 266,
|
||||||
|
"start": 10,
|
||||||
|
"type": "PipeExpression",
|
||||||
|
"type": "PipeExpression"
|
||||||
|
},
|
||||||
|
"start": 0,
|
||||||
|
"type": "VariableDeclarator"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"end": 266,
|
||||||
|
"kind": "const",
|
||||||
|
"start": 0,
|
||||||
|
"type": "VariableDeclaration",
|
||||||
|
"type": "VariableDeclaration"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"end": 267,
|
||||||
|
"start": 0
|
||||||
|
}
|
||||||
|
}
|
||||||
11
src/wasm-lib/kcl/tests/basic_fillet_cube_end/input.kcl
Normal file
@ -0,0 +1,11 @@
|
|||||||
|
part001 = startSketchOn('XY')
|
||||||
|
|> startProfileAt([0, 0], %)
|
||||||
|
|> line([0, 10], %, $thing)
|
||||||
|
|> line([10, 0], %)
|
||||||
|
|> line([0, -10], %, $thing2)
|
||||||
|
|> close(%)
|
||||||
|
|> extrude(10, %)
|
||||||
|
|> fillet({
|
||||||
|
radius: 2,
|
||||||
|
tags: [thing, getOppositeEdge(thing)]
|
||||||
|
}, %)
|
||||||
515
src/wasm-lib/kcl/tests/basic_fillet_cube_end/program_memory.snap
Normal file
@ -0,0 +1,515 @@
|
|||||||
|
---
|
||||||
|
source: kcl/src/simulation_tests.rs
|
||||||
|
description: Program memory after executing basic_fillet_cube_end.kcl
|
||||||
|
snapshot_kind: text
|
||||||
|
---
|
||||||
|
{
|
||||||
|
"environments": [
|
||||||
|
{
|
||||||
|
"bindings": {
|
||||||
|
"HALF_TURN": {
|
||||||
|
"type": "Number",
|
||||||
|
"value": 180.0,
|
||||||
|
"__meta": []
|
||||||
|
},
|
||||||
|
"QUARTER_TURN": {
|
||||||
|
"type": "Number",
|
||||||
|
"value": 90.0,
|
||||||
|
"__meta": []
|
||||||
|
},
|
||||||
|
"THREE_QUARTER_TURN": {
|
||||||
|
"type": "Number",
|
||||||
|
"value": 270.0,
|
||||||
|
"__meta": []
|
||||||
|
},
|
||||||
|
"ZERO": {
|
||||||
|
"type": "Number",
|
||||||
|
"value": 0.0,
|
||||||
|
"__meta": []
|
||||||
|
},
|
||||||
|
"part001": {
|
||||||
|
"type": "Solid",
|
||||||
|
"type": "Solid",
|
||||||
|
"id": "[uuid]",
|
||||||
|
"value": [
|
||||||
|
{
|
||||||
|
"faceId": "[uuid]",
|
||||||
|
"id": "[uuid]",
|
||||||
|
"sourceRange": [
|
||||||
|
66,
|
||||||
|
90,
|
||||||
|
0
|
||||||
|
],
|
||||||
|
"tag": {
|
||||||
|
"end": 89,
|
||||||
|
"start": 83,
|
||||||
|
"type": "TagDeclarator",
|
||||||
|
"value": "thing"
|
||||||
|
},
|
||||||
|
"type": "extrudePlane"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"faceId": "[uuid]",
|
||||||
|
"id": "[uuid]",
|
||||||
|
"sourceRange": [
|
||||||
|
96,
|
||||||
|
112,
|
||||||
|
0
|
||||||
|
],
|
||||||
|
"tag": null,
|
||||||
|
"type": "extrudePlane"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"faceId": "[uuid]",
|
||||||
|
"id": "[uuid]",
|
||||||
|
"sourceRange": [
|
||||||
|
118,
|
||||||
|
144,
|
||||||
|
0
|
||||||
|
],
|
||||||
|
"tag": {
|
||||||
|
"end": 143,
|
||||||
|
"start": 136,
|
||||||
|
"type": "TagDeclarator",
|
||||||
|
"value": "thing2"
|
||||||
|
},
|
||||||
|
"type": "extrudePlane"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"faceId": "[uuid]",
|
||||||
|
"id": "[uuid]",
|
||||||
|
"sourceRange": [
|
||||||
|
150,
|
||||||
|
158,
|
||||||
|
0
|
||||||
|
],
|
||||||
|
"tag": null,
|
||||||
|
"type": "extrudePlane"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"sketch": {
|
||||||
|
"type": "Sketch",
|
||||||
|
"id": "[uuid]",
|
||||||
|
"paths": [
|
||||||
|
{
|
||||||
|
"__geoMeta": {
|
||||||
|
"id": "[uuid]",
|
||||||
|
"sourceRange": [
|
||||||
|
66,
|
||||||
|
90,
|
||||||
|
0
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"from": [
|
||||||
|
0.0,
|
||||||
|
0.0
|
||||||
|
],
|
||||||
|
"tag": {
|
||||||
|
"end": 89,
|
||||||
|
"start": 83,
|
||||||
|
"type": "TagDeclarator",
|
||||||
|
"value": "thing"
|
||||||
|
},
|
||||||
|
"to": [
|
||||||
|
0.0,
|
||||||
|
10.0
|
||||||
|
],
|
||||||
|
"type": "ToPoint"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"__geoMeta": {
|
||||||
|
"id": "[uuid]",
|
||||||
|
"sourceRange": [
|
||||||
|
96,
|
||||||
|
112,
|
||||||
|
0
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"from": [
|
||||||
|
0.0,
|
||||||
|
10.0
|
||||||
|
],
|
||||||
|
"tag": null,
|
||||||
|
"to": [
|
||||||
|
10.0,
|
||||||
|
10.0
|
||||||
|
],
|
||||||
|
"type": "ToPoint"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"__geoMeta": {
|
||||||
|
"id": "[uuid]",
|
||||||
|
"sourceRange": [
|
||||||
|
118,
|
||||||
|
144,
|
||||||
|
0
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"from": [
|
||||||
|
10.0,
|
||||||
|
10.0
|
||||||
|
],
|
||||||
|
"tag": {
|
||||||
|
"end": 143,
|
||||||
|
"start": 136,
|
||||||
|
"type": "TagDeclarator",
|
||||||
|
"value": "thing2"
|
||||||
|
},
|
||||||
|
"to": [
|
||||||
|
10.0,
|
||||||
|
0.0
|
||||||
|
],
|
||||||
|
"type": "ToPoint"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"__geoMeta": {
|
||||||
|
"id": "[uuid]",
|
||||||
|
"sourceRange": [
|
||||||
|
150,
|
||||||
|
158,
|
||||||
|
0
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"from": [
|
||||||
|
10.0,
|
||||||
|
0.0
|
||||||
|
],
|
||||||
|
"tag": null,
|
||||||
|
"to": [
|
||||||
|
0.0,
|
||||||
|
0.0
|
||||||
|
],
|
||||||
|
"type": "ToPoint"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"on": {
|
||||||
|
"type": "plane",
|
||||||
|
"id": "[uuid]",
|
||||||
|
"value": "XY",
|
||||||
|
"origin": {
|
||||||
|
"x": 0.0,
|
||||||
|
"y": 0.0,
|
||||||
|
"z": 0.0
|
||||||
|
},
|
||||||
|
"xAxis": {
|
||||||
|
"x": 1.0,
|
||||||
|
"y": 0.0,
|
||||||
|
"z": 0.0
|
||||||
|
},
|
||||||
|
"yAxis": {
|
||||||
|
"x": 0.0,
|
||||||
|
"y": 1.0,
|
||||||
|
"z": 0.0
|
||||||
|
},
|
||||||
|
"zAxis": {
|
||||||
|
"x": 0.0,
|
||||||
|
"y": 0.0,
|
||||||
|
"z": 1.0
|
||||||
|
},
|
||||||
|
"__meta": []
|
||||||
|
},
|
||||||
|
"start": {
|
||||||
|
"from": [
|
||||||
|
0.0,
|
||||||
|
0.0
|
||||||
|
],
|
||||||
|
"to": [
|
||||||
|
0.0,
|
||||||
|
0.0
|
||||||
|
],
|
||||||
|
"tag": null,
|
||||||
|
"__geoMeta": {
|
||||||
|
"id": "[uuid]",
|
||||||
|
"sourceRange": [
|
||||||
|
35,
|
||||||
|
60,
|
||||||
|
0
|
||||||
|
]
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"tags": {
|
||||||
|
"thing": {
|
||||||
|
"type": "TagIdentifier",
|
||||||
|
"value": "thing",
|
||||||
|
"info": {
|
||||||
|
"type": "TagEngineInfo",
|
||||||
|
"id": "[uuid]",
|
||||||
|
"sketch": "[uuid]",
|
||||||
|
"path": {
|
||||||
|
"__geoMeta": {
|
||||||
|
"id": "[uuid]",
|
||||||
|
"sourceRange": [
|
||||||
|
66,
|
||||||
|
90,
|
||||||
|
0
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"from": [
|
||||||
|
0.0,
|
||||||
|
0.0
|
||||||
|
],
|
||||||
|
"tag": {
|
||||||
|
"end": 89,
|
||||||
|
"start": 83,
|
||||||
|
"type": "TagDeclarator",
|
||||||
|
"value": "thing"
|
||||||
|
},
|
||||||
|
"to": [
|
||||||
|
0.0,
|
||||||
|
10.0
|
||||||
|
],
|
||||||
|
"type": "ToPoint"
|
||||||
|
},
|
||||||
|
"surface": {
|
||||||
|
"faceId": "[uuid]",
|
||||||
|
"id": "[uuid]",
|
||||||
|
"sourceRange": [
|
||||||
|
66,
|
||||||
|
90,
|
||||||
|
0
|
||||||
|
],
|
||||||
|
"tag": {
|
||||||
|
"end": 89,
|
||||||
|
"start": 83,
|
||||||
|
"type": "TagDeclarator",
|
||||||
|
"value": "thing"
|
||||||
|
},
|
||||||
|
"type": "extrudePlane"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"__meta": [
|
||||||
|
{
|
||||||
|
"sourceRange": [
|
||||||
|
83,
|
||||||
|
89,
|
||||||
|
0
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"thing2": {
|
||||||
|
"type": "TagIdentifier",
|
||||||
|
"value": "thing2",
|
||||||
|
"info": {
|
||||||
|
"type": "TagEngineInfo",
|
||||||
|
"id": "[uuid]",
|
||||||
|
"sketch": "[uuid]",
|
||||||
|
"path": {
|
||||||
|
"__geoMeta": {
|
||||||
|
"id": "[uuid]",
|
||||||
|
"sourceRange": [
|
||||||
|
118,
|
||||||
|
144,
|
||||||
|
0
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"from": [
|
||||||
|
10.0,
|
||||||
|
10.0
|
||||||
|
],
|
||||||
|
"tag": {
|
||||||
|
"end": 143,
|
||||||
|
"start": 136,
|
||||||
|
"type": "TagDeclarator",
|
||||||
|
"value": "thing2"
|
||||||
|
},
|
||||||
|
"to": [
|
||||||
|
10.0,
|
||||||
|
0.0
|
||||||
|
],
|
||||||
|
"type": "ToPoint"
|
||||||
|
},
|
||||||
|
"surface": {
|
||||||
|
"faceId": "[uuid]",
|
||||||
|
"id": "[uuid]",
|
||||||
|
"sourceRange": [
|
||||||
|
118,
|
||||||
|
144,
|
||||||
|
0
|
||||||
|
],
|
||||||
|
"tag": {
|
||||||
|
"end": 143,
|
||||||
|
"start": 136,
|
||||||
|
"type": "TagDeclarator",
|
||||||
|
"value": "thing2"
|
||||||
|
},
|
||||||
|
"type": "extrudePlane"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"__meta": [
|
||||||
|
{
|
||||||
|
"sourceRange": [
|
||||||
|
136,
|
||||||
|
143,
|
||||||
|
0
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"__meta": [
|
||||||
|
{
|
||||||
|
"sourceRange": [
|
||||||
|
35,
|
||||||
|
60,
|
||||||
|
0
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"height": 10.0,
|
||||||
|
"startCapId": "[uuid]",
|
||||||
|
"endCapId": "[uuid]",
|
||||||
|
"edgeCuts": [
|
||||||
|
{
|
||||||
|
"type": "fillet",
|
||||||
|
"id": "[uuid]",
|
||||||
|
"radius": 2.0,
|
||||||
|
"edgeId": "[uuid]",
|
||||||
|
"tag": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "fillet",
|
||||||
|
"id": "[uuid]",
|
||||||
|
"radius": 2.0,
|
||||||
|
"edgeId": "[uuid]",
|
||||||
|
"tag": null
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"__meta": [
|
||||||
|
{
|
||||||
|
"sourceRange": [
|
||||||
|
35,
|
||||||
|
60,
|
||||||
|
0
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"thing": {
|
||||||
|
"type": "TagIdentifier",
|
||||||
|
"type": "TagIdentifier",
|
||||||
|
"value": "thing",
|
||||||
|
"info": {
|
||||||
|
"type": "TagEngineInfo",
|
||||||
|
"id": "[uuid]",
|
||||||
|
"sketch": "[uuid]",
|
||||||
|
"path": {
|
||||||
|
"__geoMeta": {
|
||||||
|
"id": "[uuid]",
|
||||||
|
"sourceRange": [
|
||||||
|
66,
|
||||||
|
90,
|
||||||
|
0
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"from": [
|
||||||
|
0.0,
|
||||||
|
0.0
|
||||||
|
],
|
||||||
|
"tag": {
|
||||||
|
"end": 89,
|
||||||
|
"start": 83,
|
||||||
|
"type": "TagDeclarator",
|
||||||
|
"value": "thing"
|
||||||
|
},
|
||||||
|
"to": [
|
||||||
|
0.0,
|
||||||
|
10.0
|
||||||
|
],
|
||||||
|
"type": "ToPoint"
|
||||||
|
},
|
||||||
|
"surface": {
|
||||||
|
"faceId": "[uuid]",
|
||||||
|
"id": "[uuid]",
|
||||||
|
"sourceRange": [
|
||||||
|
66,
|
||||||
|
90,
|
||||||
|
0
|
||||||
|
],
|
||||||
|
"tag": {
|
||||||
|
"end": 89,
|
||||||
|
"start": 83,
|
||||||
|
"type": "TagDeclarator",
|
||||||
|
"value": "thing"
|
||||||
|
},
|
||||||
|
"type": "extrudePlane"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"__meta": [
|
||||||
|
{
|
||||||
|
"sourceRange": [
|
||||||
|
83,
|
||||||
|
89,
|
||||||
|
0
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"thing2": {
|
||||||
|
"type": "TagIdentifier",
|
||||||
|
"type": "TagIdentifier",
|
||||||
|
"value": "thing2",
|
||||||
|
"info": {
|
||||||
|
"type": "TagEngineInfo",
|
||||||
|
"id": "[uuid]",
|
||||||
|
"sketch": "[uuid]",
|
||||||
|
"path": {
|
||||||
|
"__geoMeta": {
|
||||||
|
"id": "[uuid]",
|
||||||
|
"sourceRange": [
|
||||||
|
118,
|
||||||
|
144,
|
||||||
|
0
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"from": [
|
||||||
|
10.0,
|
||||||
|
10.0
|
||||||
|
],
|
||||||
|
"tag": {
|
||||||
|
"end": 143,
|
||||||
|
"start": 136,
|
||||||
|
"type": "TagDeclarator",
|
||||||
|
"value": "thing2"
|
||||||
|
},
|
||||||
|
"to": [
|
||||||
|
10.0,
|
||||||
|
0.0
|
||||||
|
],
|
||||||
|
"type": "ToPoint"
|
||||||
|
},
|
||||||
|
"surface": {
|
||||||
|
"faceId": "[uuid]",
|
||||||
|
"id": "[uuid]",
|
||||||
|
"sourceRange": [
|
||||||
|
118,
|
||||||
|
144,
|
||||||
|
0
|
||||||
|
],
|
||||||
|
"tag": {
|
||||||
|
"end": 143,
|
||||||
|
"start": 136,
|
||||||
|
"type": "TagDeclarator",
|
||||||
|
"value": "thing2"
|
||||||
|
},
|
||||||
|
"type": "extrudePlane"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"__meta": [
|
||||||
|
{
|
||||||
|
"sourceRange": [
|
||||||
|
136,
|
||||||
|
143,
|
||||||
|
0
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"parent": null
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"currentEnv": 0,
|
||||||
|
"return": null
|
||||||
|
}
|
||||||
BIN
src/wasm-lib/kcl/tests/basic_fillet_cube_end/rendered_model.png
Normal file
|
After Width: | Height: | Size: 89 KiB |
765
src/wasm-lib/kcl/tests/basic_fillet_cube_end/tokens.snap
Normal file
@ -0,0 +1,765 @@
|
|||||||
|
---
|
||||||
|
source: kcl/src/simulation_tests.rs
|
||||||
|
description: Result of tokenizing basic_fillet_cube_end.kcl
|
||||||
|
snapshot_kind: text
|
||||||
|
---
|
||||||
|
{
|
||||||
|
"Ok": [
|
||||||
|
{
|
||||||
|
"type": "word",
|
||||||
|
"start": 0,
|
||||||
|
"end": 7,
|
||||||
|
"value": "part001"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "whitespace",
|
||||||
|
"start": 7,
|
||||||
|
"end": 8,
|
||||||
|
"value": " "
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "operator",
|
||||||
|
"start": 8,
|
||||||
|
"end": 9,
|
||||||
|
"value": "="
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "whitespace",
|
||||||
|
"start": 9,
|
||||||
|
"end": 10,
|
||||||
|
"value": " "
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "word",
|
||||||
|
"start": 10,
|
||||||
|
"end": 23,
|
||||||
|
"value": "startSketchOn"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "brace",
|
||||||
|
"start": 23,
|
||||||
|
"end": 24,
|
||||||
|
"value": "("
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "string",
|
||||||
|
"start": 24,
|
||||||
|
"end": 28,
|
||||||
|
"value": "'XY'"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "brace",
|
||||||
|
"start": 28,
|
||||||
|
"end": 29,
|
||||||
|
"value": ")"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "whitespace",
|
||||||
|
"start": 29,
|
||||||
|
"end": 32,
|
||||||
|
"value": "\n "
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "operator",
|
||||||
|
"start": 32,
|
||||||
|
"end": 34,
|
||||||
|
"value": "|>"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "whitespace",
|
||||||
|
"start": 34,
|
||||||
|
"end": 35,
|
||||||
|
"value": " "
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "word",
|
||||||
|
"start": 35,
|
||||||
|
"end": 49,
|
||||||
|
"value": "startProfileAt"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "brace",
|
||||||
|
"start": 49,
|
||||||
|
"end": 50,
|
||||||
|
"value": "("
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "brace",
|
||||||
|
"start": 50,
|
||||||
|
"end": 51,
|
||||||
|
"value": "["
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "number",
|
||||||
|
"start": 51,
|
||||||
|
"end": 52,
|
||||||
|
"value": "0"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "comma",
|
||||||
|
"start": 52,
|
||||||
|
"end": 53,
|
||||||
|
"value": ","
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "whitespace",
|
||||||
|
"start": 53,
|
||||||
|
"end": 54,
|
||||||
|
"value": " "
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "number",
|
||||||
|
"start": 54,
|
||||||
|
"end": 55,
|
||||||
|
"value": "0"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "brace",
|
||||||
|
"start": 55,
|
||||||
|
"end": 56,
|
||||||
|
"value": "]"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "comma",
|
||||||
|
"start": 56,
|
||||||
|
"end": 57,
|
||||||
|
"value": ","
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "whitespace",
|
||||||
|
"start": 57,
|
||||||
|
"end": 58,
|
||||||
|
"value": " "
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "operator",
|
||||||
|
"start": 58,
|
||||||
|
"end": 59,
|
||||||
|
"value": "%"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "brace",
|
||||||
|
"start": 59,
|
||||||
|
"end": 60,
|
||||||
|
"value": ")"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "whitespace",
|
||||||
|
"start": 60,
|
||||||
|
"end": 63,
|
||||||
|
"value": "\n "
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "operator",
|
||||||
|
"start": 63,
|
||||||
|
"end": 65,
|
||||||
|
"value": "|>"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "whitespace",
|
||||||
|
"start": 65,
|
||||||
|
"end": 66,
|
||||||
|
"value": " "
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "word",
|
||||||
|
"start": 66,
|
||||||
|
"end": 70,
|
||||||
|
"value": "line"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "brace",
|
||||||
|
"start": 70,
|
||||||
|
"end": 71,
|
||||||
|
"value": "("
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "brace",
|
||||||
|
"start": 71,
|
||||||
|
"end": 72,
|
||||||
|
"value": "["
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "number",
|
||||||
|
"start": 72,
|
||||||
|
"end": 73,
|
||||||
|
"value": "0"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "comma",
|
||||||
|
"start": 73,
|
||||||
|
"end": 74,
|
||||||
|
"value": ","
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "whitespace",
|
||||||
|
"start": 74,
|
||||||
|
"end": 75,
|
||||||
|
"value": " "
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "number",
|
||||||
|
"start": 75,
|
||||||
|
"end": 77,
|
||||||
|
"value": "10"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "brace",
|
||||||
|
"start": 77,
|
||||||
|
"end": 78,
|
||||||
|
"value": "]"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "comma",
|
||||||
|
"start": 78,
|
||||||
|
"end": 79,
|
||||||
|
"value": ","
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "whitespace",
|
||||||
|
"start": 79,
|
||||||
|
"end": 80,
|
||||||
|
"value": " "
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "operator",
|
||||||
|
"start": 80,
|
||||||
|
"end": 81,
|
||||||
|
"value": "%"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "comma",
|
||||||
|
"start": 81,
|
||||||
|
"end": 82,
|
||||||
|
"value": ","
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "whitespace",
|
||||||
|
"start": 82,
|
||||||
|
"end": 83,
|
||||||
|
"value": " "
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "dollar",
|
||||||
|
"start": 83,
|
||||||
|
"end": 84,
|
||||||
|
"value": "$"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "word",
|
||||||
|
"start": 84,
|
||||||
|
"end": 89,
|
||||||
|
"value": "thing"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "brace",
|
||||||
|
"start": 89,
|
||||||
|
"end": 90,
|
||||||
|
"value": ")"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "whitespace",
|
||||||
|
"start": 90,
|
||||||
|
"end": 93,
|
||||||
|
"value": "\n "
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "operator",
|
||||||
|
"start": 93,
|
||||||
|
"end": 95,
|
||||||
|
"value": "|>"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "whitespace",
|
||||||
|
"start": 95,
|
||||||
|
"end": 96,
|
||||||
|
"value": " "
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "word",
|
||||||
|
"start": 96,
|
||||||
|
"end": 100,
|
||||||
|
"value": "line"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "brace",
|
||||||
|
"start": 100,
|
||||||
|
"end": 101,
|
||||||
|
"value": "("
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "brace",
|
||||||
|
"start": 101,
|
||||||
|
"end": 102,
|
||||||
|
"value": "["
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "number",
|
||||||
|
"start": 102,
|
||||||
|
"end": 104,
|
||||||
|
"value": "10"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "comma",
|
||||||
|
"start": 104,
|
||||||
|
"end": 105,
|
||||||
|
"value": ","
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "whitespace",
|
||||||
|
"start": 105,
|
||||||
|
"end": 106,
|
||||||
|
"value": " "
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "number",
|
||||||
|
"start": 106,
|
||||||
|
"end": 107,
|
||||||
|
"value": "0"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "brace",
|
||||||
|
"start": 107,
|
||||||
|
"end": 108,
|
||||||
|
"value": "]"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "comma",
|
||||||
|
"start": 108,
|
||||||
|
"end": 109,
|
||||||
|
"value": ","
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "whitespace",
|
||||||
|
"start": 109,
|
||||||
|
"end": 110,
|
||||||
|
"value": " "
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "operator",
|
||||||
|
"start": 110,
|
||||||
|
"end": 111,
|
||||||
|
"value": "%"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "brace",
|
||||||
|
"start": 111,
|
||||||
|
"end": 112,
|
||||||
|
"value": ")"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "whitespace",
|
||||||
|
"start": 112,
|
||||||
|
"end": 115,
|
||||||
|
"value": "\n "
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "operator",
|
||||||
|
"start": 115,
|
||||||
|
"end": 117,
|
||||||
|
"value": "|>"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "whitespace",
|
||||||
|
"start": 117,
|
||||||
|
"end": 118,
|
||||||
|
"value": " "
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "word",
|
||||||
|
"start": 118,
|
||||||
|
"end": 122,
|
||||||
|
"value": "line"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "brace",
|
||||||
|
"start": 122,
|
||||||
|
"end": 123,
|
||||||
|
"value": "("
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "brace",
|
||||||
|
"start": 123,
|
||||||
|
"end": 124,
|
||||||
|
"value": "["
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "number",
|
||||||
|
"start": 124,
|
||||||
|
"end": 125,
|
||||||
|
"value": "0"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "comma",
|
||||||
|
"start": 125,
|
||||||
|
"end": 126,
|
||||||
|
"value": ","
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "whitespace",
|
||||||
|
"start": 126,
|
||||||
|
"end": 127,
|
||||||
|
"value": " "
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "operator",
|
||||||
|
"start": 127,
|
||||||
|
"end": 128,
|
||||||
|
"value": "-"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "number",
|
||||||
|
"start": 128,
|
||||||
|
"end": 130,
|
||||||
|
"value": "10"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "brace",
|
||||||
|
"start": 130,
|
||||||
|
"end": 131,
|
||||||
|
"value": "]"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "comma",
|
||||||
|
"start": 131,
|
||||||
|
"end": 132,
|
||||||
|
"value": ","
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "whitespace",
|
||||||
|
"start": 132,
|
||||||
|
"end": 133,
|
||||||
|
"value": " "
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "operator",
|
||||||
|
"start": 133,
|
||||||
|
"end": 134,
|
||||||
|
"value": "%"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "comma",
|
||||||
|
"start": 134,
|
||||||
|
"end": 135,
|
||||||
|
"value": ","
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "whitespace",
|
||||||
|
"start": 135,
|
||||||
|
"end": 136,
|
||||||
|
"value": " "
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "dollar",
|
||||||
|
"start": 136,
|
||||||
|
"end": 137,
|
||||||
|
"value": "$"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "word",
|
||||||
|
"start": 137,
|
||||||
|
"end": 143,
|
||||||
|
"value": "thing2"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "brace",
|
||||||
|
"start": 143,
|
||||||
|
"end": 144,
|
||||||
|
"value": ")"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "whitespace",
|
||||||
|
"start": 144,
|
||||||
|
"end": 147,
|
||||||
|
"value": "\n "
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "operator",
|
||||||
|
"start": 147,
|
||||||
|
"end": 149,
|
||||||
|
"value": "|>"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "whitespace",
|
||||||
|
"start": 149,
|
||||||
|
"end": 150,
|
||||||
|
"value": " "
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "word",
|
||||||
|
"start": 150,
|
||||||
|
"end": 155,
|
||||||
|
"value": "close"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "brace",
|
||||||
|
"start": 155,
|
||||||
|
"end": 156,
|
||||||
|
"value": "("
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "operator",
|
||||||
|
"start": 156,
|
||||||
|
"end": 157,
|
||||||
|
"value": "%"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "brace",
|
||||||
|
"start": 157,
|
||||||
|
"end": 158,
|
||||||
|
"value": ")"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "whitespace",
|
||||||
|
"start": 158,
|
||||||
|
"end": 161,
|
||||||
|
"value": "\n "
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "operator",
|
||||||
|
"start": 161,
|
||||||
|
"end": 163,
|
||||||
|
"value": "|>"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "whitespace",
|
||||||
|
"start": 163,
|
||||||
|
"end": 164,
|
||||||
|
"value": " "
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "word",
|
||||||
|
"start": 164,
|
||||||
|
"end": 171,
|
||||||
|
"value": "extrude"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "brace",
|
||||||
|
"start": 171,
|
||||||
|
"end": 172,
|
||||||
|
"value": "("
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "number",
|
||||||
|
"start": 172,
|
||||||
|
"end": 174,
|
||||||
|
"value": "10"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "comma",
|
||||||
|
"start": 174,
|
||||||
|
"end": 175,
|
||||||
|
"value": ","
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "whitespace",
|
||||||
|
"start": 175,
|
||||||
|
"end": 176,
|
||||||
|
"value": " "
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "operator",
|
||||||
|
"start": 176,
|
||||||
|
"end": 177,
|
||||||
|
"value": "%"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "brace",
|
||||||
|
"start": 177,
|
||||||
|
"end": 178,
|
||||||
|
"value": ")"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "whitespace",
|
||||||
|
"start": 178,
|
||||||
|
"end": 181,
|
||||||
|
"value": "\n "
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "operator",
|
||||||
|
"start": 181,
|
||||||
|
"end": 183,
|
||||||
|
"value": "|>"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "whitespace",
|
||||||
|
"start": 183,
|
||||||
|
"end": 184,
|
||||||
|
"value": " "
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "word",
|
||||||
|
"start": 184,
|
||||||
|
"end": 190,
|
||||||
|
"value": "fillet"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "brace",
|
||||||
|
"start": 190,
|
||||||
|
"end": 191,
|
||||||
|
"value": "("
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "brace",
|
||||||
|
"start": 191,
|
||||||
|
"end": 192,
|
||||||
|
"value": "{"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "whitespace",
|
||||||
|
"start": 192,
|
||||||
|
"end": 200,
|
||||||
|
"value": "\n "
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "word",
|
||||||
|
"start": 200,
|
||||||
|
"end": 206,
|
||||||
|
"value": "radius"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "colon",
|
||||||
|
"start": 206,
|
||||||
|
"end": 207,
|
||||||
|
"value": ":"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "whitespace",
|
||||||
|
"start": 207,
|
||||||
|
"end": 208,
|
||||||
|
"value": " "
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "number",
|
||||||
|
"start": 208,
|
||||||
|
"end": 209,
|
||||||
|
"value": "2"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "comma",
|
||||||
|
"start": 209,
|
||||||
|
"end": 210,
|
||||||
|
"value": ","
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "whitespace",
|
||||||
|
"start": 210,
|
||||||
|
"end": 218,
|
||||||
|
"value": "\n "
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "word",
|
||||||
|
"start": 218,
|
||||||
|
"end": 222,
|
||||||
|
"value": "tags"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "colon",
|
||||||
|
"start": 222,
|
||||||
|
"end": 223,
|
||||||
|
"value": ":"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "whitespace",
|
||||||
|
"start": 223,
|
||||||
|
"end": 224,
|
||||||
|
"value": " "
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "brace",
|
||||||
|
"start": 224,
|
||||||
|
"end": 225,
|
||||||
|
"value": "["
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "word",
|
||||||
|
"start": 225,
|
||||||
|
"end": 230,
|
||||||
|
"value": "thing"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "comma",
|
||||||
|
"start": 230,
|
||||||
|
"end": 231,
|
||||||
|
"value": ","
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "whitespace",
|
||||||
|
"start": 231,
|
||||||
|
"end": 232,
|
||||||
|
"value": " "
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "word",
|
||||||
|
"start": 232,
|
||||||
|
"end": 247,
|
||||||
|
"value": "getOppositeEdge"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "brace",
|
||||||
|
"start": 247,
|
||||||
|
"end": 248,
|
||||||
|
"value": "("
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "word",
|
||||||
|
"start": 248,
|
||||||
|
"end": 253,
|
||||||
|
"value": "thing"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "brace",
|
||||||
|
"start": 253,
|
||||||
|
"end": 254,
|
||||||
|
"value": ")"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "brace",
|
||||||
|
"start": 254,
|
||||||
|
"end": 255,
|
||||||
|
"value": "]"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "whitespace",
|
||||||
|
"start": 255,
|
||||||
|
"end": 261,
|
||||||
|
"value": "\n "
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "brace",
|
||||||
|
"start": 261,
|
||||||
|
"end": 262,
|
||||||
|
"value": "}"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "comma",
|
||||||
|
"start": 262,
|
||||||
|
"end": 263,
|
||||||
|
"value": ","
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "whitespace",
|
||||||
|
"start": 263,
|
||||||
|
"end": 264,
|
||||||
|
"value": " "
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "operator",
|
||||||
|
"start": 264,
|
||||||
|
"end": 265,
|
||||||
|
"value": "%"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "brace",
|
||||||
|
"start": 265,
|
||||||
|
"end": 266,
|
||||||
|
"value": ")"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "whitespace",
|
||||||
|
"start": 266,
|
||||||
|
"end": 267,
|
||||||
|
"value": "\n"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
418
src/wasm-lib/kcl/tests/basic_fillet_cube_next_adjacent/ast.snap
Normal file
@ -0,0 +1,418 @@
|
|||||||
|
---
|
||||||
|
source: kcl/src/simulation_tests.rs
|
||||||
|
description: Result of parsing basic_fillet_cube_next_adjacent.kcl
|
||||||
|
snapshot_kind: text
|
||||||
|
---
|
||||||
|
{
|
||||||
|
"Ok": {
|
||||||
|
"body": [
|
||||||
|
{
|
||||||
|
"declarations": [
|
||||||
|
{
|
||||||
|
"end": 282,
|
||||||
|
"id": {
|
||||||
|
"end": 7,
|
||||||
|
"name": "part001",
|
||||||
|
"start": 0,
|
||||||
|
"type": "Identifier"
|
||||||
|
},
|
||||||
|
"init": {
|
||||||
|
"body": [
|
||||||
|
{
|
||||||
|
"arguments": [
|
||||||
|
{
|
||||||
|
"end": 28,
|
||||||
|
"raw": "'XY'",
|
||||||
|
"start": 24,
|
||||||
|
"type": "Literal",
|
||||||
|
"type": "Literal",
|
||||||
|
"value": "XY"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"callee": {
|
||||||
|
"end": 23,
|
||||||
|
"name": "startSketchOn",
|
||||||
|
"start": 10,
|
||||||
|
"type": "Identifier"
|
||||||
|
},
|
||||||
|
"end": 29,
|
||||||
|
"optional": false,
|
||||||
|
"start": 10,
|
||||||
|
"type": "CallExpression",
|
||||||
|
"type": "CallExpression"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"arguments": [
|
||||||
|
{
|
||||||
|
"elements": [
|
||||||
|
{
|
||||||
|
"end": 52,
|
||||||
|
"raw": "0",
|
||||||
|
"start": 51,
|
||||||
|
"type": "Literal",
|
||||||
|
"type": "Literal",
|
||||||
|
"value": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"end": 55,
|
||||||
|
"raw": "0",
|
||||||
|
"start": 54,
|
||||||
|
"type": "Literal",
|
||||||
|
"type": "Literal",
|
||||||
|
"value": 0
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"end": 56,
|
||||||
|
"start": 50,
|
||||||
|
"type": "ArrayExpression",
|
||||||
|
"type": "ArrayExpression"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"end": 59,
|
||||||
|
"start": 58,
|
||||||
|
"type": "PipeSubstitution",
|
||||||
|
"type": "PipeSubstitution"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"callee": {
|
||||||
|
"end": 49,
|
||||||
|
"name": "startProfileAt",
|
||||||
|
"start": 35,
|
||||||
|
"type": "Identifier"
|
||||||
|
},
|
||||||
|
"end": 60,
|
||||||
|
"optional": false,
|
||||||
|
"start": 35,
|
||||||
|
"type": "CallExpression",
|
||||||
|
"type": "CallExpression"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"arguments": [
|
||||||
|
{
|
||||||
|
"elements": [
|
||||||
|
{
|
||||||
|
"end": 73,
|
||||||
|
"raw": "0",
|
||||||
|
"start": 72,
|
||||||
|
"type": "Literal",
|
||||||
|
"type": "Literal",
|
||||||
|
"value": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"end": 77,
|
||||||
|
"raw": "10",
|
||||||
|
"start": 75,
|
||||||
|
"type": "Literal",
|
||||||
|
"type": "Literal",
|
||||||
|
"value": 10
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"end": 78,
|
||||||
|
"start": 71,
|
||||||
|
"type": "ArrayExpression",
|
||||||
|
"type": "ArrayExpression"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"end": 81,
|
||||||
|
"start": 80,
|
||||||
|
"type": "PipeSubstitution",
|
||||||
|
"type": "PipeSubstitution"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"end": 89,
|
||||||
|
"start": 83,
|
||||||
|
"type": "TagDeclarator",
|
||||||
|
"type": "TagDeclarator",
|
||||||
|
"value": "thing"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"callee": {
|
||||||
|
"end": 70,
|
||||||
|
"name": "line",
|
||||||
|
"start": 66,
|
||||||
|
"type": "Identifier"
|
||||||
|
},
|
||||||
|
"end": 90,
|
||||||
|
"optional": false,
|
||||||
|
"start": 66,
|
||||||
|
"type": "CallExpression",
|
||||||
|
"type": "CallExpression"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"arguments": [
|
||||||
|
{
|
||||||
|
"elements": [
|
||||||
|
{
|
||||||
|
"end": 104,
|
||||||
|
"raw": "10",
|
||||||
|
"start": 102,
|
||||||
|
"type": "Literal",
|
||||||
|
"type": "Literal",
|
||||||
|
"value": 10
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"end": 107,
|
||||||
|
"raw": "0",
|
||||||
|
"start": 106,
|
||||||
|
"type": "Literal",
|
||||||
|
"type": "Literal",
|
||||||
|
"value": 0
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"end": 108,
|
||||||
|
"start": 101,
|
||||||
|
"type": "ArrayExpression",
|
||||||
|
"type": "ArrayExpression"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"end": 111,
|
||||||
|
"start": 110,
|
||||||
|
"type": "PipeSubstitution",
|
||||||
|
"type": "PipeSubstitution"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"end": 120,
|
||||||
|
"start": 113,
|
||||||
|
"type": "TagDeclarator",
|
||||||
|
"type": "TagDeclarator",
|
||||||
|
"value": "thing1"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"callee": {
|
||||||
|
"end": 100,
|
||||||
|
"name": "line",
|
||||||
|
"start": 96,
|
||||||
|
"type": "Identifier"
|
||||||
|
},
|
||||||
|
"end": 121,
|
||||||
|
"optional": false,
|
||||||
|
"start": 96,
|
||||||
|
"type": "CallExpression",
|
||||||
|
"type": "CallExpression"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"arguments": [
|
||||||
|
{
|
||||||
|
"elements": [
|
||||||
|
{
|
||||||
|
"end": 134,
|
||||||
|
"raw": "0",
|
||||||
|
"start": 133,
|
||||||
|
"type": "Literal",
|
||||||
|
"type": "Literal",
|
||||||
|
"value": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"argument": {
|
||||||
|
"end": 139,
|
||||||
|
"raw": "10",
|
||||||
|
"start": 137,
|
||||||
|
"type": "Literal",
|
||||||
|
"type": "Literal",
|
||||||
|
"value": 10
|
||||||
|
},
|
||||||
|
"end": 139,
|
||||||
|
"operator": "-",
|
||||||
|
"start": 136,
|
||||||
|
"type": "UnaryExpression",
|
||||||
|
"type": "UnaryExpression"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"end": 140,
|
||||||
|
"start": 132,
|
||||||
|
"type": "ArrayExpression",
|
||||||
|
"type": "ArrayExpression"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"end": 143,
|
||||||
|
"start": 142,
|
||||||
|
"type": "PipeSubstitution",
|
||||||
|
"type": "PipeSubstitution"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"end": 152,
|
||||||
|
"start": 145,
|
||||||
|
"type": "TagDeclarator",
|
||||||
|
"type": "TagDeclarator",
|
||||||
|
"value": "thing2"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"callee": {
|
||||||
|
"end": 131,
|
||||||
|
"name": "line",
|
||||||
|
"start": 127,
|
||||||
|
"type": "Identifier"
|
||||||
|
},
|
||||||
|
"end": 153,
|
||||||
|
"optional": false,
|
||||||
|
"start": 127,
|
||||||
|
"type": "CallExpression",
|
||||||
|
"type": "CallExpression"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"arguments": [
|
||||||
|
{
|
||||||
|
"end": 166,
|
||||||
|
"start": 165,
|
||||||
|
"type": "PipeSubstitution",
|
||||||
|
"type": "PipeSubstitution"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"end": 175,
|
||||||
|
"start": 168,
|
||||||
|
"type": "TagDeclarator",
|
||||||
|
"type": "TagDeclarator",
|
||||||
|
"value": "thing3"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"callee": {
|
||||||
|
"end": 164,
|
||||||
|
"name": "close",
|
||||||
|
"start": 159,
|
||||||
|
"type": "Identifier"
|
||||||
|
},
|
||||||
|
"end": 176,
|
||||||
|
"optional": false,
|
||||||
|
"start": 159,
|
||||||
|
"type": "CallExpression",
|
||||||
|
"type": "CallExpression"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"arguments": [
|
||||||
|
{
|
||||||
|
"end": 192,
|
||||||
|
"raw": "10",
|
||||||
|
"start": 190,
|
||||||
|
"type": "Literal",
|
||||||
|
"type": "Literal",
|
||||||
|
"value": 10
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"end": 195,
|
||||||
|
"start": 194,
|
||||||
|
"type": "PipeSubstitution",
|
||||||
|
"type": "PipeSubstitution"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"callee": {
|
||||||
|
"end": 189,
|
||||||
|
"name": "extrude",
|
||||||
|
"start": 182,
|
||||||
|
"type": "Identifier"
|
||||||
|
},
|
||||||
|
"end": 196,
|
||||||
|
"optional": false,
|
||||||
|
"start": 182,
|
||||||
|
"type": "CallExpression",
|
||||||
|
"type": "CallExpression"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"arguments": [
|
||||||
|
{
|
||||||
|
"end": 278,
|
||||||
|
"properties": [
|
||||||
|
{
|
||||||
|
"end": 227,
|
||||||
|
"key": {
|
||||||
|
"end": 224,
|
||||||
|
"name": "radius",
|
||||||
|
"start": 218,
|
||||||
|
"type": "Identifier"
|
||||||
|
},
|
||||||
|
"start": 218,
|
||||||
|
"type": "ObjectProperty",
|
||||||
|
"value": {
|
||||||
|
"end": 227,
|
||||||
|
"raw": "2",
|
||||||
|
"start": 226,
|
||||||
|
"type": "Literal",
|
||||||
|
"type": "Literal",
|
||||||
|
"value": 2
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"end": 271,
|
||||||
|
"key": {
|
||||||
|
"end": 240,
|
||||||
|
"name": "tags",
|
||||||
|
"start": 236,
|
||||||
|
"type": "Identifier"
|
||||||
|
},
|
||||||
|
"start": 236,
|
||||||
|
"type": "ObjectProperty",
|
||||||
|
"value": {
|
||||||
|
"elements": [
|
||||||
|
{
|
||||||
|
"arguments": [
|
||||||
|
{
|
||||||
|
"end": 269,
|
||||||
|
"name": "thing3",
|
||||||
|
"start": 263,
|
||||||
|
"type": "Identifier",
|
||||||
|
"type": "Identifier"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"callee": {
|
||||||
|
"end": 262,
|
||||||
|
"name": "getNextAdjacentEdge",
|
||||||
|
"start": 243,
|
||||||
|
"type": "Identifier"
|
||||||
|
},
|
||||||
|
"end": 270,
|
||||||
|
"optional": false,
|
||||||
|
"start": 243,
|
||||||
|
"type": "CallExpression",
|
||||||
|
"type": "CallExpression"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"end": 271,
|
||||||
|
"start": 242,
|
||||||
|
"type": "ArrayExpression",
|
||||||
|
"type": "ArrayExpression"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"start": 209,
|
||||||
|
"type": "ObjectExpression",
|
||||||
|
"type": "ObjectExpression"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"end": 281,
|
||||||
|
"start": 280,
|
||||||
|
"type": "PipeSubstitution",
|
||||||
|
"type": "PipeSubstitution"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"callee": {
|
||||||
|
"end": 208,
|
||||||
|
"name": "fillet",
|
||||||
|
"start": 202,
|
||||||
|
"type": "Identifier"
|
||||||
|
},
|
||||||
|
"end": 282,
|
||||||
|
"optional": false,
|
||||||
|
"start": 202,
|
||||||
|
"type": "CallExpression",
|
||||||
|
"type": "CallExpression"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"end": 282,
|
||||||
|
"start": 10,
|
||||||
|
"type": "PipeExpression",
|
||||||
|
"type": "PipeExpression"
|
||||||
|
},
|
||||||
|
"start": 0,
|
||||||
|
"type": "VariableDeclarator"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"end": 282,
|
||||||
|
"kind": "const",
|
||||||
|
"start": 0,
|
||||||
|
"type": "VariableDeclaration",
|
||||||
|
"type": "VariableDeclaration"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"end": 283,
|
||||||
|
"start": 0
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -0,0 +1,11 @@
|
|||||||
|
part001 = startSketchOn('XY')
|
||||||
|
|> startProfileAt([0, 0], %)
|
||||||
|
|> line([0, 10], %, $thing)
|
||||||
|
|> line([10, 0], %, $thing1)
|
||||||
|
|> line([0, -10], %, $thing2)
|
||||||
|
|> close(%, $thing3)
|
||||||
|
|> extrude(10, %)
|
||||||
|
|> fillet({
|
||||||
|
radius: 2,
|
||||||
|
tags: [getNextAdjacentEdge(thing3)]
|
||||||
|
}, %)
|
||||||
@ -0,0 +1,766 @@
|
|||||||
|
---
|
||||||
|
source: kcl/src/simulation_tests.rs
|
||||||
|
description: Program memory after executing basic_fillet_cube_next_adjacent.kcl
|
||||||
|
snapshot_kind: text
|
||||||
|
---
|
||||||
|
{
|
||||||
|
"environments": [
|
||||||
|
{
|
||||||
|
"bindings": {
|
||||||
|
"HALF_TURN": {
|
||||||
|
"type": "Number",
|
||||||
|
"value": 180.0,
|
||||||
|
"__meta": []
|
||||||
|
},
|
||||||
|
"QUARTER_TURN": {
|
||||||
|
"type": "Number",
|
||||||
|
"value": 90.0,
|
||||||
|
"__meta": []
|
||||||
|
},
|
||||||
|
"THREE_QUARTER_TURN": {
|
||||||
|
"type": "Number",
|
||||||
|
"value": 270.0,
|
||||||
|
"__meta": []
|
||||||
|
},
|
||||||
|
"ZERO": {
|
||||||
|
"type": "Number",
|
||||||
|
"value": 0.0,
|
||||||
|
"__meta": []
|
||||||
|
},
|
||||||
|
"part001": {
|
||||||
|
"type": "Solid",
|
||||||
|
"type": "Solid",
|
||||||
|
"id": "[uuid]",
|
||||||
|
"value": [
|
||||||
|
{
|
||||||
|
"faceId": "[uuid]",
|
||||||
|
"id": "[uuid]",
|
||||||
|
"sourceRange": [
|
||||||
|
66,
|
||||||
|
90,
|
||||||
|
0
|
||||||
|
],
|
||||||
|
"tag": {
|
||||||
|
"end": 89,
|
||||||
|
"start": 83,
|
||||||
|
"type": "TagDeclarator",
|
||||||
|
"value": "thing"
|
||||||
|
},
|
||||||
|
"type": "extrudePlane"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"faceId": "[uuid]",
|
||||||
|
"id": "[uuid]",
|
||||||
|
"sourceRange": [
|
||||||
|
96,
|
||||||
|
121,
|
||||||
|
0
|
||||||
|
],
|
||||||
|
"tag": {
|
||||||
|
"end": 120,
|
||||||
|
"start": 113,
|
||||||
|
"type": "TagDeclarator",
|
||||||
|
"value": "thing1"
|
||||||
|
},
|
||||||
|
"type": "extrudePlane"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"faceId": "[uuid]",
|
||||||
|
"id": "[uuid]",
|
||||||
|
"sourceRange": [
|
||||||
|
127,
|
||||||
|
153,
|
||||||
|
0
|
||||||
|
],
|
||||||
|
"tag": {
|
||||||
|
"end": 152,
|
||||||
|
"start": 145,
|
||||||
|
"type": "TagDeclarator",
|
||||||
|
"value": "thing2"
|
||||||
|
},
|
||||||
|
"type": "extrudePlane"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"faceId": "[uuid]",
|
||||||
|
"id": "[uuid]",
|
||||||
|
"sourceRange": [
|
||||||
|
159,
|
||||||
|
176,
|
||||||
|
0
|
||||||
|
],
|
||||||
|
"tag": {
|
||||||
|
"end": 175,
|
||||||
|
"start": 168,
|
||||||
|
"type": "TagDeclarator",
|
||||||
|
"value": "thing3"
|
||||||
|
},
|
||||||
|
"type": "extrudePlane"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"sketch": {
|
||||||
|
"type": "Sketch",
|
||||||
|
"id": "[uuid]",
|
||||||
|
"paths": [
|
||||||
|
{
|
||||||
|
"__geoMeta": {
|
||||||
|
"id": "[uuid]",
|
||||||
|
"sourceRange": [
|
||||||
|
66,
|
||||||
|
90,
|
||||||
|
0
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"from": [
|
||||||
|
0.0,
|
||||||
|
0.0
|
||||||
|
],
|
||||||
|
"tag": {
|
||||||
|
"end": 89,
|
||||||
|
"start": 83,
|
||||||
|
"type": "TagDeclarator",
|
||||||
|
"value": "thing"
|
||||||
|
},
|
||||||
|
"to": [
|
||||||
|
0.0,
|
||||||
|
10.0
|
||||||
|
],
|
||||||
|
"type": "ToPoint"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"__geoMeta": {
|
||||||
|
"id": "[uuid]",
|
||||||
|
"sourceRange": [
|
||||||
|
96,
|
||||||
|
121,
|
||||||
|
0
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"from": [
|
||||||
|
0.0,
|
||||||
|
10.0
|
||||||
|
],
|
||||||
|
"tag": {
|
||||||
|
"end": 120,
|
||||||
|
"start": 113,
|
||||||
|
"type": "TagDeclarator",
|
||||||
|
"value": "thing1"
|
||||||
|
},
|
||||||
|
"to": [
|
||||||
|
10.0,
|
||||||
|
10.0
|
||||||
|
],
|
||||||
|
"type": "ToPoint"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"__geoMeta": {
|
||||||
|
"id": "[uuid]",
|
||||||
|
"sourceRange": [
|
||||||
|
127,
|
||||||
|
153,
|
||||||
|
0
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"from": [
|
||||||
|
10.0,
|
||||||
|
10.0
|
||||||
|
],
|
||||||
|
"tag": {
|
||||||
|
"end": 152,
|
||||||
|
"start": 145,
|
||||||
|
"type": "TagDeclarator",
|
||||||
|
"value": "thing2"
|
||||||
|
},
|
||||||
|
"to": [
|
||||||
|
10.0,
|
||||||
|
0.0
|
||||||
|
],
|
||||||
|
"type": "ToPoint"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"__geoMeta": {
|
||||||
|
"id": "[uuid]",
|
||||||
|
"sourceRange": [
|
||||||
|
159,
|
||||||
|
176,
|
||||||
|
0
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"from": [
|
||||||
|
10.0,
|
||||||
|
0.0
|
||||||
|
],
|
||||||
|
"tag": {
|
||||||
|
"end": 175,
|
||||||
|
"start": 168,
|
||||||
|
"type": "TagDeclarator",
|
||||||
|
"value": "thing3"
|
||||||
|
},
|
||||||
|
"to": [
|
||||||
|
0.0,
|
||||||
|
0.0
|
||||||
|
],
|
||||||
|
"type": "ToPoint"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"on": {
|
||||||
|
"type": "plane",
|
||||||
|
"id": "[uuid]",
|
||||||
|
"value": "XY",
|
||||||
|
"origin": {
|
||||||
|
"x": 0.0,
|
||||||
|
"y": 0.0,
|
||||||
|
"z": 0.0
|
||||||
|
},
|
||||||
|
"xAxis": {
|
||||||
|
"x": 1.0,
|
||||||
|
"y": 0.0,
|
||||||
|
"z": 0.0
|
||||||
|
},
|
||||||
|
"yAxis": {
|
||||||
|
"x": 0.0,
|
||||||
|
"y": 1.0,
|
||||||
|
"z": 0.0
|
||||||
|
},
|
||||||
|
"zAxis": {
|
||||||
|
"x": 0.0,
|
||||||
|
"y": 0.0,
|
||||||
|
"z": 1.0
|
||||||
|
},
|
||||||
|
"__meta": []
|
||||||
|
},
|
||||||
|
"start": {
|
||||||
|
"from": [
|
||||||
|
0.0,
|
||||||
|
0.0
|
||||||
|
],
|
||||||
|
"to": [
|
||||||
|
0.0,
|
||||||
|
0.0
|
||||||
|
],
|
||||||
|
"tag": null,
|
||||||
|
"__geoMeta": {
|
||||||
|
"id": "[uuid]",
|
||||||
|
"sourceRange": [
|
||||||
|
35,
|
||||||
|
60,
|
||||||
|
0
|
||||||
|
]
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"tags": {
|
||||||
|
"thing": {
|
||||||
|
"type": "TagIdentifier",
|
||||||
|
"value": "thing",
|
||||||
|
"info": {
|
||||||
|
"type": "TagEngineInfo",
|
||||||
|
"id": "[uuid]",
|
||||||
|
"sketch": "[uuid]",
|
||||||
|
"path": {
|
||||||
|
"__geoMeta": {
|
||||||
|
"id": "[uuid]",
|
||||||
|
"sourceRange": [
|
||||||
|
66,
|
||||||
|
90,
|
||||||
|
0
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"from": [
|
||||||
|
0.0,
|
||||||
|
0.0
|
||||||
|
],
|
||||||
|
"tag": {
|
||||||
|
"end": 89,
|
||||||
|
"start": 83,
|
||||||
|
"type": "TagDeclarator",
|
||||||
|
"value": "thing"
|
||||||
|
},
|
||||||
|
"to": [
|
||||||
|
0.0,
|
||||||
|
10.0
|
||||||
|
],
|
||||||
|
"type": "ToPoint"
|
||||||
|
},
|
||||||
|
"surface": {
|
||||||
|
"faceId": "[uuid]",
|
||||||
|
"id": "[uuid]",
|
||||||
|
"sourceRange": [
|
||||||
|
66,
|
||||||
|
90,
|
||||||
|
0
|
||||||
|
],
|
||||||
|
"tag": {
|
||||||
|
"end": 89,
|
||||||
|
"start": 83,
|
||||||
|
"type": "TagDeclarator",
|
||||||
|
"value": "thing"
|
||||||
|
},
|
||||||
|
"type": "extrudePlane"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"__meta": [
|
||||||
|
{
|
||||||
|
"sourceRange": [
|
||||||
|
83,
|
||||||
|
89,
|
||||||
|
0
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"thing1": {
|
||||||
|
"type": "TagIdentifier",
|
||||||
|
"value": "thing1",
|
||||||
|
"info": {
|
||||||
|
"type": "TagEngineInfo",
|
||||||
|
"id": "[uuid]",
|
||||||
|
"sketch": "[uuid]",
|
||||||
|
"path": {
|
||||||
|
"__geoMeta": {
|
||||||
|
"id": "[uuid]",
|
||||||
|
"sourceRange": [
|
||||||
|
96,
|
||||||
|
121,
|
||||||
|
0
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"from": [
|
||||||
|
0.0,
|
||||||
|
10.0
|
||||||
|
],
|
||||||
|
"tag": {
|
||||||
|
"end": 120,
|
||||||
|
"start": 113,
|
||||||
|
"type": "TagDeclarator",
|
||||||
|
"value": "thing1"
|
||||||
|
},
|
||||||
|
"to": [
|
||||||
|
10.0,
|
||||||
|
10.0
|
||||||
|
],
|
||||||
|
"type": "ToPoint"
|
||||||
|
},
|
||||||
|
"surface": {
|
||||||
|
"faceId": "[uuid]",
|
||||||
|
"id": "[uuid]",
|
||||||
|
"sourceRange": [
|
||||||
|
96,
|
||||||
|
121,
|
||||||
|
0
|
||||||
|
],
|
||||||
|
"tag": {
|
||||||
|
"end": 120,
|
||||||
|
"start": 113,
|
||||||
|
"type": "TagDeclarator",
|
||||||
|
"value": "thing1"
|
||||||
|
},
|
||||||
|
"type": "extrudePlane"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"__meta": [
|
||||||
|
{
|
||||||
|
"sourceRange": [
|
||||||
|
113,
|
||||||
|
120,
|
||||||
|
0
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"thing2": {
|
||||||
|
"type": "TagIdentifier",
|
||||||
|
"value": "thing2",
|
||||||
|
"info": {
|
||||||
|
"type": "TagEngineInfo",
|
||||||
|
"id": "[uuid]",
|
||||||
|
"sketch": "[uuid]",
|
||||||
|
"path": {
|
||||||
|
"__geoMeta": {
|
||||||
|
"id": "[uuid]",
|
||||||
|
"sourceRange": [
|
||||||
|
127,
|
||||||
|
153,
|
||||||
|
0
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"from": [
|
||||||
|
10.0,
|
||||||
|
10.0
|
||||||
|
],
|
||||||
|
"tag": {
|
||||||
|
"end": 152,
|
||||||
|
"start": 145,
|
||||||
|
"type": "TagDeclarator",
|
||||||
|
"value": "thing2"
|
||||||
|
},
|
||||||
|
"to": [
|
||||||
|
10.0,
|
||||||
|
0.0
|
||||||
|
],
|
||||||
|
"type": "ToPoint"
|
||||||
|
},
|
||||||
|
"surface": {
|
||||||
|
"faceId": "[uuid]",
|
||||||
|
"id": "[uuid]",
|
||||||
|
"sourceRange": [
|
||||||
|
127,
|
||||||
|
153,
|
||||||
|
0
|
||||||
|
],
|
||||||
|
"tag": {
|
||||||
|
"end": 152,
|
||||||
|
"start": 145,
|
||||||
|
"type": "TagDeclarator",
|
||||||
|
"value": "thing2"
|
||||||
|
},
|
||||||
|
"type": "extrudePlane"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"__meta": [
|
||||||
|
{
|
||||||
|
"sourceRange": [
|
||||||
|
145,
|
||||||
|
152,
|
||||||
|
0
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"thing3": {
|
||||||
|
"type": "TagIdentifier",
|
||||||
|
"value": "thing3",
|
||||||
|
"info": {
|
||||||
|
"type": "TagEngineInfo",
|
||||||
|
"id": "[uuid]",
|
||||||
|
"sketch": "[uuid]",
|
||||||
|
"path": {
|
||||||
|
"__geoMeta": {
|
||||||
|
"id": "[uuid]",
|
||||||
|
"sourceRange": [
|
||||||
|
159,
|
||||||
|
176,
|
||||||
|
0
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"from": [
|
||||||
|
10.0,
|
||||||
|
0.0
|
||||||
|
],
|
||||||
|
"tag": {
|
||||||
|
"end": 175,
|
||||||
|
"start": 168,
|
||||||
|
"type": "TagDeclarator",
|
||||||
|
"value": "thing3"
|
||||||
|
},
|
||||||
|
"to": [
|
||||||
|
0.0,
|
||||||
|
0.0
|
||||||
|
],
|
||||||
|
"type": "ToPoint"
|
||||||
|
},
|
||||||
|
"surface": {
|
||||||
|
"faceId": "[uuid]",
|
||||||
|
"id": "[uuid]",
|
||||||
|
"sourceRange": [
|
||||||
|
159,
|
||||||
|
176,
|
||||||
|
0
|
||||||
|
],
|
||||||
|
"tag": {
|
||||||
|
"end": 175,
|
||||||
|
"start": 168,
|
||||||
|
"type": "TagDeclarator",
|
||||||
|
"value": "thing3"
|
||||||
|
},
|
||||||
|
"type": "extrudePlane"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"__meta": [
|
||||||
|
{
|
||||||
|
"sourceRange": [
|
||||||
|
168,
|
||||||
|
175,
|
||||||
|
0
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"__meta": [
|
||||||
|
{
|
||||||
|
"sourceRange": [
|
||||||
|
35,
|
||||||
|
60,
|
||||||
|
0
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"height": 10.0,
|
||||||
|
"startCapId": "[uuid]",
|
||||||
|
"endCapId": "[uuid]",
|
||||||
|
"edgeCuts": [
|
||||||
|
{
|
||||||
|
"type": "fillet",
|
||||||
|
"id": "[uuid]",
|
||||||
|
"radius": 2.0,
|
||||||
|
"edgeId": "[uuid]",
|
||||||
|
"tag": null
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"__meta": [
|
||||||
|
{
|
||||||
|
"sourceRange": [
|
||||||
|
35,
|
||||||
|
60,
|
||||||
|
0
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"thing": {
|
||||||
|
"type": "TagIdentifier",
|
||||||
|
"type": "TagIdentifier",
|
||||||
|
"value": "thing",
|
||||||
|
"info": {
|
||||||
|
"type": "TagEngineInfo",
|
||||||
|
"id": "[uuid]",
|
||||||
|
"sketch": "[uuid]",
|
||||||
|
"path": {
|
||||||
|
"__geoMeta": {
|
||||||
|
"id": "[uuid]",
|
||||||
|
"sourceRange": [
|
||||||
|
66,
|
||||||
|
90,
|
||||||
|
0
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"from": [
|
||||||
|
0.0,
|
||||||
|
0.0
|
||||||
|
],
|
||||||
|
"tag": {
|
||||||
|
"end": 89,
|
||||||
|
"start": 83,
|
||||||
|
"type": "TagDeclarator",
|
||||||
|
"value": "thing"
|
||||||
|
},
|
||||||
|
"to": [
|
||||||
|
0.0,
|
||||||
|
10.0
|
||||||
|
],
|
||||||
|
"type": "ToPoint"
|
||||||
|
},
|
||||||
|
"surface": {
|
||||||
|
"faceId": "[uuid]",
|
||||||
|
"id": "[uuid]",
|
||||||
|
"sourceRange": [
|
||||||
|
66,
|
||||||
|
90,
|
||||||
|
0
|
||||||
|
],
|
||||||
|
"tag": {
|
||||||
|
"end": 89,
|
||||||
|
"start": 83,
|
||||||
|
"type": "TagDeclarator",
|
||||||
|
"value": "thing"
|
||||||
|
},
|
||||||
|
"type": "extrudePlane"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"__meta": [
|
||||||
|
{
|
||||||
|
"sourceRange": [
|
||||||
|
83,
|
||||||
|
89,
|
||||||
|
0
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"thing1": {
|
||||||
|
"type": "TagIdentifier",
|
||||||
|
"type": "TagIdentifier",
|
||||||
|
"value": "thing1",
|
||||||
|
"info": {
|
||||||
|
"type": "TagEngineInfo",
|
||||||
|
"id": "[uuid]",
|
||||||
|
"sketch": "[uuid]",
|
||||||
|
"path": {
|
||||||
|
"__geoMeta": {
|
||||||
|
"id": "[uuid]",
|
||||||
|
"sourceRange": [
|
||||||
|
96,
|
||||||
|
121,
|
||||||
|
0
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"from": [
|
||||||
|
0.0,
|
||||||
|
10.0
|
||||||
|
],
|
||||||
|
"tag": {
|
||||||
|
"end": 120,
|
||||||
|
"start": 113,
|
||||||
|
"type": "TagDeclarator",
|
||||||
|
"value": "thing1"
|
||||||
|
},
|
||||||
|
"to": [
|
||||||
|
10.0,
|
||||||
|
10.0
|
||||||
|
],
|
||||||
|
"type": "ToPoint"
|
||||||
|
},
|
||||||
|
"surface": {
|
||||||
|
"faceId": "[uuid]",
|
||||||
|
"id": "[uuid]",
|
||||||
|
"sourceRange": [
|
||||||
|
96,
|
||||||
|
121,
|
||||||
|
0
|
||||||
|
],
|
||||||
|
"tag": {
|
||||||
|
"end": 120,
|
||||||
|
"start": 113,
|
||||||
|
"type": "TagDeclarator",
|
||||||
|
"value": "thing1"
|
||||||
|
},
|
||||||
|
"type": "extrudePlane"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"__meta": [
|
||||||
|
{
|
||||||
|
"sourceRange": [
|
||||||
|
113,
|
||||||
|
120,
|
||||||
|
0
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"thing2": {
|
||||||
|
"type": "TagIdentifier",
|
||||||
|
"type": "TagIdentifier",
|
||||||
|
"value": "thing2",
|
||||||
|
"info": {
|
||||||
|
"type": "TagEngineInfo",
|
||||||
|
"id": "[uuid]",
|
||||||
|
"sketch": "[uuid]",
|
||||||
|
"path": {
|
||||||
|
"__geoMeta": {
|
||||||
|
"id": "[uuid]",
|
||||||
|
"sourceRange": [
|
||||||
|
127,
|
||||||
|
153,
|
||||||
|
0
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"from": [
|
||||||
|
10.0,
|
||||||
|
10.0
|
||||||
|
],
|
||||||
|
"tag": {
|
||||||
|
"end": 152,
|
||||||
|
"start": 145,
|
||||||
|
"type": "TagDeclarator",
|
||||||
|
"value": "thing2"
|
||||||
|
},
|
||||||
|
"to": [
|
||||||
|
10.0,
|
||||||
|
0.0
|
||||||
|
],
|
||||||
|
"type": "ToPoint"
|
||||||
|
},
|
||||||
|
"surface": {
|
||||||
|
"faceId": "[uuid]",
|
||||||
|
"id": "[uuid]",
|
||||||
|
"sourceRange": [
|
||||||
|
127,
|
||||||
|
153,
|
||||||
|
0
|
||||||
|
],
|
||||||
|
"tag": {
|
||||||
|
"end": 152,
|
||||||
|
"start": 145,
|
||||||
|
"type": "TagDeclarator",
|
||||||
|
"value": "thing2"
|
||||||
|
},
|
||||||
|
"type": "extrudePlane"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"__meta": [
|
||||||
|
{
|
||||||
|
"sourceRange": [
|
||||||
|
145,
|
||||||
|
152,
|
||||||
|
0
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"thing3": {
|
||||||
|
"type": "TagIdentifier",
|
||||||
|
"type": "TagIdentifier",
|
||||||
|
"value": "thing3",
|
||||||
|
"info": {
|
||||||
|
"type": "TagEngineInfo",
|
||||||
|
"id": "[uuid]",
|
||||||
|
"sketch": "[uuid]",
|
||||||
|
"path": {
|
||||||
|
"__geoMeta": {
|
||||||
|
"id": "[uuid]",
|
||||||
|
"sourceRange": [
|
||||||
|
159,
|
||||||
|
176,
|
||||||
|
0
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"from": [
|
||||||
|
10.0,
|
||||||
|
0.0
|
||||||
|
],
|
||||||
|
"tag": {
|
||||||
|
"end": 175,
|
||||||
|
"start": 168,
|
||||||
|
"type": "TagDeclarator",
|
||||||
|
"value": "thing3"
|
||||||
|
},
|
||||||
|
"to": [
|
||||||
|
0.0,
|
||||||
|
0.0
|
||||||
|
],
|
||||||
|
"type": "ToPoint"
|
||||||
|
},
|
||||||
|
"surface": {
|
||||||
|
"faceId": "[uuid]",
|
||||||
|
"id": "[uuid]",
|
||||||
|
"sourceRange": [
|
||||||
|
159,
|
||||||
|
176,
|
||||||
|
0
|
||||||
|
],
|
||||||
|
"tag": {
|
||||||
|
"end": 175,
|
||||||
|
"start": 168,
|
||||||
|
"type": "TagDeclarator",
|
||||||
|
"value": "thing3"
|
||||||
|
},
|
||||||
|
"type": "extrudePlane"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"__meta": [
|
||||||
|
{
|
||||||
|
"sourceRange": [
|
||||||
|
168,
|
||||||
|
175,
|
||||||
|
0
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"parent": null
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"currentEnv": 0,
|
||||||
|
"return": null
|
||||||
|
}
|
||||||
|
After Width: | Height: | Size: 88 KiB |
@ -0,0 +1,795 @@
|
|||||||
|
---
|
||||||
|
source: kcl/src/simulation_tests.rs
|
||||||
|
description: Result of tokenizing basic_fillet_cube_next_adjacent.kcl
|
||||||
|
snapshot_kind: text
|
||||||
|
---
|
||||||
|
{
|
||||||
|
"Ok": [
|
||||||
|
{
|
||||||
|
"type": "word",
|
||||||
|
"start": 0,
|
||||||
|
"end": 7,
|
||||||
|
"value": "part001"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "whitespace",
|
||||||
|
"start": 7,
|
||||||
|
"end": 8,
|
||||||
|
"value": " "
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "operator",
|
||||||
|
"start": 8,
|
||||||
|
"end": 9,
|
||||||
|
"value": "="
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "whitespace",
|
||||||
|
"start": 9,
|
||||||
|
"end": 10,
|
||||||
|
"value": " "
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "word",
|
||||||
|
"start": 10,
|
||||||
|
"end": 23,
|
||||||
|
"value": "startSketchOn"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "brace",
|
||||||
|
"start": 23,
|
||||||
|
"end": 24,
|
||||||
|
"value": "("
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "string",
|
||||||
|
"start": 24,
|
||||||
|
"end": 28,
|
||||||
|
"value": "'XY'"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "brace",
|
||||||
|
"start": 28,
|
||||||
|
"end": 29,
|
||||||
|
"value": ")"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "whitespace",
|
||||||
|
"start": 29,
|
||||||
|
"end": 32,
|
||||||
|
"value": "\n "
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "operator",
|
||||||
|
"start": 32,
|
||||||
|
"end": 34,
|
||||||
|
"value": "|>"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "whitespace",
|
||||||
|
"start": 34,
|
||||||
|
"end": 35,
|
||||||
|
"value": " "
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "word",
|
||||||
|
"start": 35,
|
||||||
|
"end": 49,
|
||||||
|
"value": "startProfileAt"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "brace",
|
||||||
|
"start": 49,
|
||||||
|
"end": 50,
|
||||||
|
"value": "("
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "brace",
|
||||||
|
"start": 50,
|
||||||
|
"end": 51,
|
||||||
|
"value": "["
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "number",
|
||||||
|
"start": 51,
|
||||||
|
"end": 52,
|
||||||
|
"value": "0"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "comma",
|
||||||
|
"start": 52,
|
||||||
|
"end": 53,
|
||||||
|
"value": ","
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "whitespace",
|
||||||
|
"start": 53,
|
||||||
|
"end": 54,
|
||||||
|
"value": " "
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "number",
|
||||||
|
"start": 54,
|
||||||
|
"end": 55,
|
||||||
|
"value": "0"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "brace",
|
||||||
|
"start": 55,
|
||||||
|
"end": 56,
|
||||||
|
"value": "]"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "comma",
|
||||||
|
"start": 56,
|
||||||
|
"end": 57,
|
||||||
|
"value": ","
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "whitespace",
|
||||||
|
"start": 57,
|
||||||
|
"end": 58,
|
||||||
|
"value": " "
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "operator",
|
||||||
|
"start": 58,
|
||||||
|
"end": 59,
|
||||||
|
"value": "%"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "brace",
|
||||||
|
"start": 59,
|
||||||
|
"end": 60,
|
||||||
|
"value": ")"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "whitespace",
|
||||||
|
"start": 60,
|
||||||
|
"end": 63,
|
||||||
|
"value": "\n "
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "operator",
|
||||||
|
"start": 63,
|
||||||
|
"end": 65,
|
||||||
|
"value": "|>"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "whitespace",
|
||||||
|
"start": 65,
|
||||||
|
"end": 66,
|
||||||
|
"value": " "
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "word",
|
||||||
|
"start": 66,
|
||||||
|
"end": 70,
|
||||||
|
"value": "line"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "brace",
|
||||||
|
"start": 70,
|
||||||
|
"end": 71,
|
||||||
|
"value": "("
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "brace",
|
||||||
|
"start": 71,
|
||||||
|
"end": 72,
|
||||||
|
"value": "["
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "number",
|
||||||
|
"start": 72,
|
||||||
|
"end": 73,
|
||||||
|
"value": "0"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "comma",
|
||||||
|
"start": 73,
|
||||||
|
"end": 74,
|
||||||
|
"value": ","
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "whitespace",
|
||||||
|
"start": 74,
|
||||||
|
"end": 75,
|
||||||
|
"value": " "
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "number",
|
||||||
|
"start": 75,
|
||||||
|
"end": 77,
|
||||||
|
"value": "10"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "brace",
|
||||||
|
"start": 77,
|
||||||
|
"end": 78,
|
||||||
|
"value": "]"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "comma",
|
||||||
|
"start": 78,
|
||||||
|
"end": 79,
|
||||||
|
"value": ","
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "whitespace",
|
||||||
|
"start": 79,
|
||||||
|
"end": 80,
|
||||||
|
"value": " "
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "operator",
|
||||||
|
"start": 80,
|
||||||
|
"end": 81,
|
||||||
|
"value": "%"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "comma",
|
||||||
|
"start": 81,
|
||||||
|
"end": 82,
|
||||||
|
"value": ","
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "whitespace",
|
||||||
|
"start": 82,
|
||||||
|
"end": 83,
|
||||||
|
"value": " "
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "dollar",
|
||||||
|
"start": 83,
|
||||||
|
"end": 84,
|
||||||
|
"value": "$"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "word",
|
||||||
|
"start": 84,
|
||||||
|
"end": 89,
|
||||||
|
"value": "thing"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "brace",
|
||||||
|
"start": 89,
|
||||||
|
"end": 90,
|
||||||
|
"value": ")"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "whitespace",
|
||||||
|
"start": 90,
|
||||||
|
"end": 93,
|
||||||
|
"value": "\n "
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "operator",
|
||||||
|
"start": 93,
|
||||||
|
"end": 95,
|
||||||
|
"value": "|>"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "whitespace",
|
||||||
|
"start": 95,
|
||||||
|
"end": 96,
|
||||||
|
"value": " "
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "word",
|
||||||
|
"start": 96,
|
||||||
|
"end": 100,
|
||||||
|
"value": "line"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "brace",
|
||||||
|
"start": 100,
|
||||||
|
"end": 101,
|
||||||
|
"value": "("
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "brace",
|
||||||
|
"start": 101,
|
||||||
|
"end": 102,
|
||||||
|
"value": "["
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "number",
|
||||||
|
"start": 102,
|
||||||
|
"end": 104,
|
||||||
|
"value": "10"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "comma",
|
||||||
|
"start": 104,
|
||||||
|
"end": 105,
|
||||||
|
"value": ","
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "whitespace",
|
||||||
|
"start": 105,
|
||||||
|
"end": 106,
|
||||||
|
"value": " "
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "number",
|
||||||
|
"start": 106,
|
||||||
|
"end": 107,
|
||||||
|
"value": "0"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "brace",
|
||||||
|
"start": 107,
|
||||||
|
"end": 108,
|
||||||
|
"value": "]"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "comma",
|
||||||
|
"start": 108,
|
||||||
|
"end": 109,
|
||||||
|
"value": ","
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "whitespace",
|
||||||
|
"start": 109,
|
||||||
|
"end": 110,
|
||||||
|
"value": " "
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "operator",
|
||||||
|
"start": 110,
|
||||||
|
"end": 111,
|
||||||
|
"value": "%"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "comma",
|
||||||
|
"start": 111,
|
||||||
|
"end": 112,
|
||||||
|
"value": ","
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "whitespace",
|
||||||
|
"start": 112,
|
||||||
|
"end": 113,
|
||||||
|
"value": " "
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "dollar",
|
||||||
|
"start": 113,
|
||||||
|
"end": 114,
|
||||||
|
"value": "$"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "word",
|
||||||
|
"start": 114,
|
||||||
|
"end": 120,
|
||||||
|
"value": "thing1"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "brace",
|
||||||
|
"start": 120,
|
||||||
|
"end": 121,
|
||||||
|
"value": ")"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "whitespace",
|
||||||
|
"start": 121,
|
||||||
|
"end": 124,
|
||||||
|
"value": "\n "
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "operator",
|
||||||
|
"start": 124,
|
||||||
|
"end": 126,
|
||||||
|
"value": "|>"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "whitespace",
|
||||||
|
"start": 126,
|
||||||
|
"end": 127,
|
||||||
|
"value": " "
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "word",
|
||||||
|
"start": 127,
|
||||||
|
"end": 131,
|
||||||
|
"value": "line"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "brace",
|
||||||
|
"start": 131,
|
||||||
|
"end": 132,
|
||||||
|
"value": "("
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "brace",
|
||||||
|
"start": 132,
|
||||||
|
"end": 133,
|
||||||
|
"value": "["
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "number",
|
||||||
|
"start": 133,
|
||||||
|
"end": 134,
|
||||||
|
"value": "0"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "comma",
|
||||||
|
"start": 134,
|
||||||
|
"end": 135,
|
||||||
|
"value": ","
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "whitespace",
|
||||||
|
"start": 135,
|
||||||
|
"end": 136,
|
||||||
|
"value": " "
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "operator",
|
||||||
|
"start": 136,
|
||||||
|
"end": 137,
|
||||||
|
"value": "-"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "number",
|
||||||
|
"start": 137,
|
||||||
|
"end": 139,
|
||||||
|
"value": "10"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "brace",
|
||||||
|
"start": 139,
|
||||||
|
"end": 140,
|
||||||
|
"value": "]"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "comma",
|
||||||
|
"start": 140,
|
||||||
|
"end": 141,
|
||||||
|
"value": ","
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "whitespace",
|
||||||
|
"start": 141,
|
||||||
|
"end": 142,
|
||||||
|
"value": " "
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "operator",
|
||||||
|
"start": 142,
|
||||||
|
"end": 143,
|
||||||
|
"value": "%"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "comma",
|
||||||
|
"start": 143,
|
||||||
|
"end": 144,
|
||||||
|
"value": ","
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "whitespace",
|
||||||
|
"start": 144,
|
||||||
|
"end": 145,
|
||||||
|
"value": " "
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "dollar",
|
||||||
|
"start": 145,
|
||||||
|
"end": 146,
|
||||||
|
"value": "$"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "word",
|
||||||
|
"start": 146,
|
||||||
|
"end": 152,
|
||||||
|
"value": "thing2"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "brace",
|
||||||
|
"start": 152,
|
||||||
|
"end": 153,
|
||||||
|
"value": ")"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "whitespace",
|
||||||
|
"start": 153,
|
||||||
|
"end": 156,
|
||||||
|
"value": "\n "
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "operator",
|
||||||
|
"start": 156,
|
||||||
|
"end": 158,
|
||||||
|
"value": "|>"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "whitespace",
|
||||||
|
"start": 158,
|
||||||
|
"end": 159,
|
||||||
|
"value": " "
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "word",
|
||||||
|
"start": 159,
|
||||||
|
"end": 164,
|
||||||
|
"value": "close"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "brace",
|
||||||
|
"start": 164,
|
||||||
|
"end": 165,
|
||||||
|
"value": "("
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "operator",
|
||||||
|
"start": 165,
|
||||||
|
"end": 166,
|
||||||
|
"value": "%"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "comma",
|
||||||
|
"start": 166,
|
||||||
|
"end": 167,
|
||||||
|
"value": ","
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "whitespace",
|
||||||
|
"start": 167,
|
||||||
|
"end": 168,
|
||||||
|
"value": " "
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "dollar",
|
||||||
|
"start": 168,
|
||||||
|
"end": 169,
|
||||||
|
"value": "$"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "word",
|
||||||
|
"start": 169,
|
||||||
|
"end": 175,
|
||||||
|
"value": "thing3"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "brace",
|
||||||
|
"start": 175,
|
||||||
|
"end": 176,
|
||||||
|
"value": ")"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "whitespace",
|
||||||
|
"start": 176,
|
||||||
|
"end": 179,
|
||||||
|
"value": "\n "
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "operator",
|
||||||
|
"start": 179,
|
||||||
|
"end": 181,
|
||||||
|
"value": "|>"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "whitespace",
|
||||||
|
"start": 181,
|
||||||
|
"end": 182,
|
||||||
|
"value": " "
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "word",
|
||||||
|
"start": 182,
|
||||||
|
"end": 189,
|
||||||
|
"value": "extrude"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "brace",
|
||||||
|
"start": 189,
|
||||||
|
"end": 190,
|
||||||
|
"value": "("
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "number",
|
||||||
|
"start": 190,
|
||||||
|
"end": 192,
|
||||||
|
"value": "10"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "comma",
|
||||||
|
"start": 192,
|
||||||
|
"end": 193,
|
||||||
|
"value": ","
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "whitespace",
|
||||||
|
"start": 193,
|
||||||
|
"end": 194,
|
||||||
|
"value": " "
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "operator",
|
||||||
|
"start": 194,
|
||||||
|
"end": 195,
|
||||||
|
"value": "%"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "brace",
|
||||||
|
"start": 195,
|
||||||
|
"end": 196,
|
||||||
|
"value": ")"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "whitespace",
|
||||||
|
"start": 196,
|
||||||
|
"end": 199,
|
||||||
|
"value": "\n "
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "operator",
|
||||||
|
"start": 199,
|
||||||
|
"end": 201,
|
||||||
|
"value": "|>"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "whitespace",
|
||||||
|
"start": 201,
|
||||||
|
"end": 202,
|
||||||
|
"value": " "
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "word",
|
||||||
|
"start": 202,
|
||||||
|
"end": 208,
|
||||||
|
"value": "fillet"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "brace",
|
||||||
|
"start": 208,
|
||||||
|
"end": 209,
|
||||||
|
"value": "("
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "brace",
|
||||||
|
"start": 209,
|
||||||
|
"end": 210,
|
||||||
|
"value": "{"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "whitespace",
|
||||||
|
"start": 210,
|
||||||
|
"end": 218,
|
||||||
|
"value": "\n "
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "word",
|
||||||
|
"start": 218,
|
||||||
|
"end": 224,
|
||||||
|
"value": "radius"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "colon",
|
||||||
|
"start": 224,
|
||||||
|
"end": 225,
|
||||||
|
"value": ":"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "whitespace",
|
||||||
|
"start": 225,
|
||||||
|
"end": 226,
|
||||||
|
"value": " "
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "number",
|
||||||
|
"start": 226,
|
||||||
|
"end": 227,
|
||||||
|
"value": "2"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "comma",
|
||||||
|
"start": 227,
|
||||||
|
"end": 228,
|
||||||
|
"value": ","
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "whitespace",
|
||||||
|
"start": 228,
|
||||||
|
"end": 236,
|
||||||
|
"value": "\n "
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "word",
|
||||||
|
"start": 236,
|
||||||
|
"end": 240,
|
||||||
|
"value": "tags"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "colon",
|
||||||
|
"start": 240,
|
||||||
|
"end": 241,
|
||||||
|
"value": ":"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "whitespace",
|
||||||
|
"start": 241,
|
||||||
|
"end": 242,
|
||||||
|
"value": " "
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "brace",
|
||||||
|
"start": 242,
|
||||||
|
"end": 243,
|
||||||
|
"value": "["
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "word",
|
||||||
|
"start": 243,
|
||||||
|
"end": 262,
|
||||||
|
"value": "getNextAdjacentEdge"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "brace",
|
||||||
|
"start": 262,
|
||||||
|
"end": 263,
|
||||||
|
"value": "("
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "word",
|
||||||
|
"start": 263,
|
||||||
|
"end": 269,
|
||||||
|
"value": "thing3"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "brace",
|
||||||
|
"start": 269,
|
||||||
|
"end": 270,
|
||||||
|
"value": ")"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "brace",
|
||||||
|
"start": 270,
|
||||||
|
"end": 271,
|
||||||
|
"value": "]"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "whitespace",
|
||||||
|
"start": 271,
|
||||||
|
"end": 277,
|
||||||
|
"value": "\n "
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "brace",
|
||||||
|
"start": 277,
|
||||||
|
"end": 278,
|
||||||
|
"value": "}"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "comma",
|
||||||
|
"start": 278,
|
||||||
|
"end": 279,
|
||||||
|
"value": ","
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "whitespace",
|
||||||
|
"start": 279,
|
||||||
|
"end": 280,
|
||||||
|
"value": " "
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "operator",
|
||||||
|
"start": 280,
|
||||||
|
"end": 281,
|
||||||
|
"value": "%"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "brace",
|
||||||
|
"start": 281,
|
||||||
|
"end": 282,
|
||||||
|
"value": ")"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "whitespace",
|
||||||
|
"start": 282,
|
||||||
|
"end": 283,
|
||||||
|
"value": "\n"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
@ -0,0 +1,418 @@
|
|||||||
|
---
|
||||||
|
source: kcl/src/simulation_tests.rs
|
||||||
|
description: Result of parsing basic_fillet_cube_previous_adjacent.kcl
|
||||||
|
snapshot_kind: text
|
||||||
|
---
|
||||||
|
{
|
||||||
|
"Ok": {
|
||||||
|
"body": [
|
||||||
|
{
|
||||||
|
"declarations": [
|
||||||
|
{
|
||||||
|
"end": 286,
|
||||||
|
"id": {
|
||||||
|
"end": 7,
|
||||||
|
"name": "part001",
|
||||||
|
"start": 0,
|
||||||
|
"type": "Identifier"
|
||||||
|
},
|
||||||
|
"init": {
|
||||||
|
"body": [
|
||||||
|
{
|
||||||
|
"arguments": [
|
||||||
|
{
|
||||||
|
"end": 28,
|
||||||
|
"raw": "'XY'",
|
||||||
|
"start": 24,
|
||||||
|
"type": "Literal",
|
||||||
|
"type": "Literal",
|
||||||
|
"value": "XY"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"callee": {
|
||||||
|
"end": 23,
|
||||||
|
"name": "startSketchOn",
|
||||||
|
"start": 10,
|
||||||
|
"type": "Identifier"
|
||||||
|
},
|
||||||
|
"end": 29,
|
||||||
|
"optional": false,
|
||||||
|
"start": 10,
|
||||||
|
"type": "CallExpression",
|
||||||
|
"type": "CallExpression"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"arguments": [
|
||||||
|
{
|
||||||
|
"elements": [
|
||||||
|
{
|
||||||
|
"end": 52,
|
||||||
|
"raw": "0",
|
||||||
|
"start": 51,
|
||||||
|
"type": "Literal",
|
||||||
|
"type": "Literal",
|
||||||
|
"value": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"end": 55,
|
||||||
|
"raw": "0",
|
||||||
|
"start": 54,
|
||||||
|
"type": "Literal",
|
||||||
|
"type": "Literal",
|
||||||
|
"value": 0
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"end": 56,
|
||||||
|
"start": 50,
|
||||||
|
"type": "ArrayExpression",
|
||||||
|
"type": "ArrayExpression"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"end": 59,
|
||||||
|
"start": 58,
|
||||||
|
"type": "PipeSubstitution",
|
||||||
|
"type": "PipeSubstitution"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"callee": {
|
||||||
|
"end": 49,
|
||||||
|
"name": "startProfileAt",
|
||||||
|
"start": 35,
|
||||||
|
"type": "Identifier"
|
||||||
|
},
|
||||||
|
"end": 60,
|
||||||
|
"optional": false,
|
||||||
|
"start": 35,
|
||||||
|
"type": "CallExpression",
|
||||||
|
"type": "CallExpression"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"arguments": [
|
||||||
|
{
|
||||||
|
"elements": [
|
||||||
|
{
|
||||||
|
"end": 73,
|
||||||
|
"raw": "0",
|
||||||
|
"start": 72,
|
||||||
|
"type": "Literal",
|
||||||
|
"type": "Literal",
|
||||||
|
"value": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"end": 77,
|
||||||
|
"raw": "10",
|
||||||
|
"start": 75,
|
||||||
|
"type": "Literal",
|
||||||
|
"type": "Literal",
|
||||||
|
"value": 10
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"end": 78,
|
||||||
|
"start": 71,
|
||||||
|
"type": "ArrayExpression",
|
||||||
|
"type": "ArrayExpression"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"end": 81,
|
||||||
|
"start": 80,
|
||||||
|
"type": "PipeSubstitution",
|
||||||
|
"type": "PipeSubstitution"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"end": 89,
|
||||||
|
"start": 83,
|
||||||
|
"type": "TagDeclarator",
|
||||||
|
"type": "TagDeclarator",
|
||||||
|
"value": "thing"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"callee": {
|
||||||
|
"end": 70,
|
||||||
|
"name": "line",
|
||||||
|
"start": 66,
|
||||||
|
"type": "Identifier"
|
||||||
|
},
|
||||||
|
"end": 90,
|
||||||
|
"optional": false,
|
||||||
|
"start": 66,
|
||||||
|
"type": "CallExpression",
|
||||||
|
"type": "CallExpression"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"arguments": [
|
||||||
|
{
|
||||||
|
"elements": [
|
||||||
|
{
|
||||||
|
"end": 104,
|
||||||
|
"raw": "10",
|
||||||
|
"start": 102,
|
||||||
|
"type": "Literal",
|
||||||
|
"type": "Literal",
|
||||||
|
"value": 10
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"end": 107,
|
||||||
|
"raw": "0",
|
||||||
|
"start": 106,
|
||||||
|
"type": "Literal",
|
||||||
|
"type": "Literal",
|
||||||
|
"value": 0
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"end": 108,
|
||||||
|
"start": 101,
|
||||||
|
"type": "ArrayExpression",
|
||||||
|
"type": "ArrayExpression"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"end": 111,
|
||||||
|
"start": 110,
|
||||||
|
"type": "PipeSubstitution",
|
||||||
|
"type": "PipeSubstitution"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"end": 120,
|
||||||
|
"start": 113,
|
||||||
|
"type": "TagDeclarator",
|
||||||
|
"type": "TagDeclarator",
|
||||||
|
"value": "thing1"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"callee": {
|
||||||
|
"end": 100,
|
||||||
|
"name": "line",
|
||||||
|
"start": 96,
|
||||||
|
"type": "Identifier"
|
||||||
|
},
|
||||||
|
"end": 121,
|
||||||
|
"optional": false,
|
||||||
|
"start": 96,
|
||||||
|
"type": "CallExpression",
|
||||||
|
"type": "CallExpression"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"arguments": [
|
||||||
|
{
|
||||||
|
"elements": [
|
||||||
|
{
|
||||||
|
"end": 134,
|
||||||
|
"raw": "0",
|
||||||
|
"start": 133,
|
||||||
|
"type": "Literal",
|
||||||
|
"type": "Literal",
|
||||||
|
"value": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"argument": {
|
||||||
|
"end": 139,
|
||||||
|
"raw": "10",
|
||||||
|
"start": 137,
|
||||||
|
"type": "Literal",
|
||||||
|
"type": "Literal",
|
||||||
|
"value": 10
|
||||||
|
},
|
||||||
|
"end": 139,
|
||||||
|
"operator": "-",
|
||||||
|
"start": 136,
|
||||||
|
"type": "UnaryExpression",
|
||||||
|
"type": "UnaryExpression"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"end": 140,
|
||||||
|
"start": 132,
|
||||||
|
"type": "ArrayExpression",
|
||||||
|
"type": "ArrayExpression"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"end": 143,
|
||||||
|
"start": 142,
|
||||||
|
"type": "PipeSubstitution",
|
||||||
|
"type": "PipeSubstitution"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"end": 152,
|
||||||
|
"start": 145,
|
||||||
|
"type": "TagDeclarator",
|
||||||
|
"type": "TagDeclarator",
|
||||||
|
"value": "thing2"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"callee": {
|
||||||
|
"end": 131,
|
||||||
|
"name": "line",
|
||||||
|
"start": 127,
|
||||||
|
"type": "Identifier"
|
||||||
|
},
|
||||||
|
"end": 153,
|
||||||
|
"optional": false,
|
||||||
|
"start": 127,
|
||||||
|
"type": "CallExpression",
|
||||||
|
"type": "CallExpression"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"arguments": [
|
||||||
|
{
|
||||||
|
"end": 166,
|
||||||
|
"start": 165,
|
||||||
|
"type": "PipeSubstitution",
|
||||||
|
"type": "PipeSubstitution"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"end": 175,
|
||||||
|
"start": 168,
|
||||||
|
"type": "TagDeclarator",
|
||||||
|
"type": "TagDeclarator",
|
||||||
|
"value": "thing3"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"callee": {
|
||||||
|
"end": 164,
|
||||||
|
"name": "close",
|
||||||
|
"start": 159,
|
||||||
|
"type": "Identifier"
|
||||||
|
},
|
||||||
|
"end": 176,
|
||||||
|
"optional": false,
|
||||||
|
"start": 159,
|
||||||
|
"type": "CallExpression",
|
||||||
|
"type": "CallExpression"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"arguments": [
|
||||||
|
{
|
||||||
|
"end": 192,
|
||||||
|
"raw": "10",
|
||||||
|
"start": 190,
|
||||||
|
"type": "Literal",
|
||||||
|
"type": "Literal",
|
||||||
|
"value": 10
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"end": 195,
|
||||||
|
"start": 194,
|
||||||
|
"type": "PipeSubstitution",
|
||||||
|
"type": "PipeSubstitution"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"callee": {
|
||||||
|
"end": 189,
|
||||||
|
"name": "extrude",
|
||||||
|
"start": 182,
|
||||||
|
"type": "Identifier"
|
||||||
|
},
|
||||||
|
"end": 196,
|
||||||
|
"optional": false,
|
||||||
|
"start": 182,
|
||||||
|
"type": "CallExpression",
|
||||||
|
"type": "CallExpression"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"arguments": [
|
||||||
|
{
|
||||||
|
"end": 282,
|
||||||
|
"properties": [
|
||||||
|
{
|
||||||
|
"end": 227,
|
||||||
|
"key": {
|
||||||
|
"end": 224,
|
||||||
|
"name": "radius",
|
||||||
|
"start": 218,
|
||||||
|
"type": "Identifier"
|
||||||
|
},
|
||||||
|
"start": 218,
|
||||||
|
"type": "ObjectProperty",
|
||||||
|
"value": {
|
||||||
|
"end": 227,
|
||||||
|
"raw": "2",
|
||||||
|
"start": 226,
|
||||||
|
"type": "Literal",
|
||||||
|
"type": "Literal",
|
||||||
|
"value": 2
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"end": 275,
|
||||||
|
"key": {
|
||||||
|
"end": 240,
|
||||||
|
"name": "tags",
|
||||||
|
"start": 236,
|
||||||
|
"type": "Identifier"
|
||||||
|
},
|
||||||
|
"start": 236,
|
||||||
|
"type": "ObjectProperty",
|
||||||
|
"value": {
|
||||||
|
"elements": [
|
||||||
|
{
|
||||||
|
"arguments": [
|
||||||
|
{
|
||||||
|
"end": 273,
|
||||||
|
"name": "thing3",
|
||||||
|
"start": 267,
|
||||||
|
"type": "Identifier",
|
||||||
|
"type": "Identifier"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"callee": {
|
||||||
|
"end": 266,
|
||||||
|
"name": "getPreviousAdjacentEdge",
|
||||||
|
"start": 243,
|
||||||
|
"type": "Identifier"
|
||||||
|
},
|
||||||
|
"end": 274,
|
||||||
|
"optional": false,
|
||||||
|
"start": 243,
|
||||||
|
"type": "CallExpression",
|
||||||
|
"type": "CallExpression"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"end": 275,
|
||||||
|
"start": 242,
|
||||||
|
"type": "ArrayExpression",
|
||||||
|
"type": "ArrayExpression"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"start": 209,
|
||||||
|
"type": "ObjectExpression",
|
||||||
|
"type": "ObjectExpression"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"end": 285,
|
||||||
|
"start": 284,
|
||||||
|
"type": "PipeSubstitution",
|
||||||
|
"type": "PipeSubstitution"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"callee": {
|
||||||
|
"end": 208,
|
||||||
|
"name": "fillet",
|
||||||
|
"start": 202,
|
||||||
|
"type": "Identifier"
|
||||||
|
},
|
||||||
|
"end": 286,
|
||||||
|
"optional": false,
|
||||||
|
"start": 202,
|
||||||
|
"type": "CallExpression",
|
||||||
|
"type": "CallExpression"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"end": 286,
|
||||||
|
"start": 10,
|
||||||
|
"type": "PipeExpression",
|
||||||
|
"type": "PipeExpression"
|
||||||
|
},
|
||||||
|
"start": 0,
|
||||||
|
"type": "VariableDeclarator"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"end": 286,
|
||||||
|
"kind": "const",
|
||||||
|
"start": 0,
|
||||||
|
"type": "VariableDeclaration",
|
||||||
|
"type": "VariableDeclaration"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"end": 287,
|
||||||
|
"start": 0
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -0,0 +1,11 @@
|
|||||||
|
part001 = startSketchOn('XY')
|
||||||
|
|> startProfileAt([0, 0], %)
|
||||||
|
|> line([0, 10], %, $thing)
|
||||||
|
|> line([10, 0], %, $thing1)
|
||||||
|
|> line([0, -10], %, $thing2)
|
||||||
|
|> close(%, $thing3)
|
||||||
|
|> extrude(10, %)
|
||||||
|
|> fillet({
|
||||||
|
radius: 2,
|
||||||
|
tags: [getPreviousAdjacentEdge(thing3)]
|
||||||
|
}, %)
|
||||||
@ -0,0 +1,766 @@
|
|||||||
|
---
|
||||||
|
source: kcl/src/simulation_tests.rs
|
||||||
|
description: Program memory after executing basic_fillet_cube_previous_adjacent.kcl
|
||||||
|
snapshot_kind: text
|
||||||
|
---
|
||||||
|
{
|
||||||
|
"environments": [
|
||||||
|
{
|
||||||
|
"bindings": {
|
||||||
|
"HALF_TURN": {
|
||||||
|
"type": "Number",
|
||||||
|
"value": 180.0,
|
||||||
|
"__meta": []
|
||||||
|
},
|
||||||
|
"QUARTER_TURN": {
|
||||||
|
"type": "Number",
|
||||||
|
"value": 90.0,
|
||||||
|
"__meta": []
|
||||||
|
},
|
||||||
|
"THREE_QUARTER_TURN": {
|
||||||
|
"type": "Number",
|
||||||
|
"value": 270.0,
|
||||||
|
"__meta": []
|
||||||
|
},
|
||||||
|
"ZERO": {
|
||||||
|
"type": "Number",
|
||||||
|
"value": 0.0,
|
||||||
|
"__meta": []
|
||||||
|
},
|
||||||
|
"part001": {
|
||||||
|
"type": "Solid",
|
||||||
|
"type": "Solid",
|
||||||
|
"id": "[uuid]",
|
||||||
|
"value": [
|
||||||
|
{
|
||||||
|
"faceId": "[uuid]",
|
||||||
|
"id": "[uuid]",
|
||||||
|
"sourceRange": [
|
||||||
|
66,
|
||||||
|
90,
|
||||||
|
0
|
||||||
|
],
|
||||||
|
"tag": {
|
||||||
|
"end": 89,
|
||||||
|
"start": 83,
|
||||||
|
"type": "TagDeclarator",
|
||||||
|
"value": "thing"
|
||||||
|
},
|
||||||
|
"type": "extrudePlane"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"faceId": "[uuid]",
|
||||||
|
"id": "[uuid]",
|
||||||
|
"sourceRange": [
|
||||||
|
96,
|
||||||
|
121,
|
||||||
|
0
|
||||||
|
],
|
||||||
|
"tag": {
|
||||||
|
"end": 120,
|
||||||
|
"start": 113,
|
||||||
|
"type": "TagDeclarator",
|
||||||
|
"value": "thing1"
|
||||||
|
},
|
||||||
|
"type": "extrudePlane"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"faceId": "[uuid]",
|
||||||
|
"id": "[uuid]",
|
||||||
|
"sourceRange": [
|
||||||
|
127,
|
||||||
|
153,
|
||||||
|
0
|
||||||
|
],
|
||||||
|
"tag": {
|
||||||
|
"end": 152,
|
||||||
|
"start": 145,
|
||||||
|
"type": "TagDeclarator",
|
||||||
|
"value": "thing2"
|
||||||
|
},
|
||||||
|
"type": "extrudePlane"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"faceId": "[uuid]",
|
||||||
|
"id": "[uuid]",
|
||||||
|
"sourceRange": [
|
||||||
|
159,
|
||||||
|
176,
|
||||||
|
0
|
||||||
|
],
|
||||||
|
"tag": {
|
||||||
|
"end": 175,
|
||||||
|
"start": 168,
|
||||||
|
"type": "TagDeclarator",
|
||||||
|
"value": "thing3"
|
||||||
|
},
|
||||||
|
"type": "extrudePlane"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"sketch": {
|
||||||
|
"type": "Sketch",
|
||||||
|
"id": "[uuid]",
|
||||||
|
"paths": [
|
||||||
|
{
|
||||||
|
"__geoMeta": {
|
||||||
|
"id": "[uuid]",
|
||||||
|
"sourceRange": [
|
||||||
|
66,
|
||||||
|
90,
|
||||||
|
0
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"from": [
|
||||||
|
0.0,
|
||||||
|
0.0
|
||||||
|
],
|
||||||
|
"tag": {
|
||||||
|
"end": 89,
|
||||||
|
"start": 83,
|
||||||
|
"type": "TagDeclarator",
|
||||||
|
"value": "thing"
|
||||||
|
},
|
||||||
|
"to": [
|
||||||
|
0.0,
|
||||||
|
10.0
|
||||||
|
],
|
||||||
|
"type": "ToPoint"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"__geoMeta": {
|
||||||
|
"id": "[uuid]",
|
||||||
|
"sourceRange": [
|
||||||
|
96,
|
||||||
|
121,
|
||||||
|
0
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"from": [
|
||||||
|
0.0,
|
||||||
|
10.0
|
||||||
|
],
|
||||||
|
"tag": {
|
||||||
|
"end": 120,
|
||||||
|
"start": 113,
|
||||||
|
"type": "TagDeclarator",
|
||||||
|
"value": "thing1"
|
||||||
|
},
|
||||||
|
"to": [
|
||||||
|
10.0,
|
||||||
|
10.0
|
||||||
|
],
|
||||||
|
"type": "ToPoint"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"__geoMeta": {
|
||||||
|
"id": "[uuid]",
|
||||||
|
"sourceRange": [
|
||||||
|
127,
|
||||||
|
153,
|
||||||
|
0
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"from": [
|
||||||
|
10.0,
|
||||||
|
10.0
|
||||||
|
],
|
||||||
|
"tag": {
|
||||||
|
"end": 152,
|
||||||
|
"start": 145,
|
||||||
|
"type": "TagDeclarator",
|
||||||
|
"value": "thing2"
|
||||||
|
},
|
||||||
|
"to": [
|
||||||
|
10.0,
|
||||||
|
0.0
|
||||||
|
],
|
||||||
|
"type": "ToPoint"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"__geoMeta": {
|
||||||
|
"id": "[uuid]",
|
||||||
|
"sourceRange": [
|
||||||
|
159,
|
||||||
|
176,
|
||||||
|
0
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"from": [
|
||||||
|
10.0,
|
||||||
|
0.0
|
||||||
|
],
|
||||||
|
"tag": {
|
||||||
|
"end": 175,
|
||||||
|
"start": 168,
|
||||||
|
"type": "TagDeclarator",
|
||||||
|
"value": "thing3"
|
||||||
|
},
|
||||||
|
"to": [
|
||||||
|
0.0,
|
||||||
|
0.0
|
||||||
|
],
|
||||||
|
"type": "ToPoint"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"on": {
|
||||||
|
"type": "plane",
|
||||||
|
"id": "[uuid]",
|
||||||
|
"value": "XY",
|
||||||
|
"origin": {
|
||||||
|
"x": 0.0,
|
||||||
|
"y": 0.0,
|
||||||
|
"z": 0.0
|
||||||
|
},
|
||||||
|
"xAxis": {
|
||||||
|
"x": 1.0,
|
||||||
|
"y": 0.0,
|
||||||
|
"z": 0.0
|
||||||
|
},
|
||||||
|
"yAxis": {
|
||||||
|
"x": 0.0,
|
||||||
|
"y": 1.0,
|
||||||
|
"z": 0.0
|
||||||
|
},
|
||||||
|
"zAxis": {
|
||||||
|
"x": 0.0,
|
||||||
|
"y": 0.0,
|
||||||
|
"z": 1.0
|
||||||
|
},
|
||||||
|
"__meta": []
|
||||||
|
},
|
||||||
|
"start": {
|
||||||
|
"from": [
|
||||||
|
0.0,
|
||||||
|
0.0
|
||||||
|
],
|
||||||
|
"to": [
|
||||||
|
0.0,
|
||||||
|
0.0
|
||||||
|
],
|
||||||
|
"tag": null,
|
||||||
|
"__geoMeta": {
|
||||||
|
"id": "[uuid]",
|
||||||
|
"sourceRange": [
|
||||||
|
35,
|
||||||
|
60,
|
||||||
|
0
|
||||||
|
]
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"tags": {
|
||||||
|
"thing": {
|
||||||
|
"type": "TagIdentifier",
|
||||||
|
"value": "thing",
|
||||||
|
"info": {
|
||||||
|
"type": "TagEngineInfo",
|
||||||
|
"id": "[uuid]",
|
||||||
|
"sketch": "[uuid]",
|
||||||
|
"path": {
|
||||||
|
"__geoMeta": {
|
||||||
|
"id": "[uuid]",
|
||||||
|
"sourceRange": [
|
||||||
|
66,
|
||||||
|
90,
|
||||||
|
0
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"from": [
|
||||||
|
0.0,
|
||||||
|
0.0
|
||||||
|
],
|
||||||
|
"tag": {
|
||||||
|
"end": 89,
|
||||||
|
"start": 83,
|
||||||
|
"type": "TagDeclarator",
|
||||||
|
"value": "thing"
|
||||||
|
},
|
||||||
|
"to": [
|
||||||
|
0.0,
|
||||||
|
10.0
|
||||||
|
],
|
||||||
|
"type": "ToPoint"
|
||||||
|
},
|
||||||
|
"surface": {
|
||||||
|
"faceId": "[uuid]",
|
||||||
|
"id": "[uuid]",
|
||||||
|
"sourceRange": [
|
||||||
|
66,
|
||||||
|
90,
|
||||||
|
0
|
||||||
|
],
|
||||||
|
"tag": {
|
||||||
|
"end": 89,
|
||||||
|
"start": 83,
|
||||||
|
"type": "TagDeclarator",
|
||||||
|
"value": "thing"
|
||||||
|
},
|
||||||
|
"type": "extrudePlane"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"__meta": [
|
||||||
|
{
|
||||||
|
"sourceRange": [
|
||||||
|
83,
|
||||||
|
89,
|
||||||
|
0
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"thing1": {
|
||||||
|
"type": "TagIdentifier",
|
||||||
|
"value": "thing1",
|
||||||
|
"info": {
|
||||||
|
"type": "TagEngineInfo",
|
||||||
|
"id": "[uuid]",
|
||||||
|
"sketch": "[uuid]",
|
||||||
|
"path": {
|
||||||
|
"__geoMeta": {
|
||||||
|
"id": "[uuid]",
|
||||||
|
"sourceRange": [
|
||||||
|
96,
|
||||||
|
121,
|
||||||
|
0
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"from": [
|
||||||
|
0.0,
|
||||||
|
10.0
|
||||||
|
],
|
||||||
|
"tag": {
|
||||||
|
"end": 120,
|
||||||
|
"start": 113,
|
||||||
|
"type": "TagDeclarator",
|
||||||
|
"value": "thing1"
|
||||||
|
},
|
||||||
|
"to": [
|
||||||
|
10.0,
|
||||||
|
10.0
|
||||||
|
],
|
||||||
|
"type": "ToPoint"
|
||||||
|
},
|
||||||
|
"surface": {
|
||||||
|
"faceId": "[uuid]",
|
||||||
|
"id": "[uuid]",
|
||||||
|
"sourceRange": [
|
||||||
|
96,
|
||||||
|
121,
|
||||||
|
0
|
||||||
|
],
|
||||||
|
"tag": {
|
||||||
|
"end": 120,
|
||||||
|
"start": 113,
|
||||||
|
"type": "TagDeclarator",
|
||||||
|
"value": "thing1"
|
||||||
|
},
|
||||||
|
"type": "extrudePlane"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"__meta": [
|
||||||
|
{
|
||||||
|
"sourceRange": [
|
||||||
|
113,
|
||||||
|
120,
|
||||||
|
0
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"thing2": {
|
||||||
|
"type": "TagIdentifier",
|
||||||
|
"value": "thing2",
|
||||||
|
"info": {
|
||||||
|
"type": "TagEngineInfo",
|
||||||
|
"id": "[uuid]",
|
||||||
|
"sketch": "[uuid]",
|
||||||
|
"path": {
|
||||||
|
"__geoMeta": {
|
||||||
|
"id": "[uuid]",
|
||||||
|
"sourceRange": [
|
||||||
|
127,
|
||||||
|
153,
|
||||||
|
0
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"from": [
|
||||||
|
10.0,
|
||||||
|
10.0
|
||||||
|
],
|
||||||
|
"tag": {
|
||||||
|
"end": 152,
|
||||||
|
"start": 145,
|
||||||
|
"type": "TagDeclarator",
|
||||||
|
"value": "thing2"
|
||||||
|
},
|
||||||
|
"to": [
|
||||||
|
10.0,
|
||||||
|
0.0
|
||||||
|
],
|
||||||
|
"type": "ToPoint"
|
||||||
|
},
|
||||||
|
"surface": {
|
||||||
|
"faceId": "[uuid]",
|
||||||
|
"id": "[uuid]",
|
||||||
|
"sourceRange": [
|
||||||
|
127,
|
||||||
|
153,
|
||||||
|
0
|
||||||
|
],
|
||||||
|
"tag": {
|
||||||
|
"end": 152,
|
||||||
|
"start": 145,
|
||||||
|
"type": "TagDeclarator",
|
||||||
|
"value": "thing2"
|
||||||
|
},
|
||||||
|
"type": "extrudePlane"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"__meta": [
|
||||||
|
{
|
||||||
|
"sourceRange": [
|
||||||
|
145,
|
||||||
|
152,
|
||||||
|
0
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"thing3": {
|
||||||
|
"type": "TagIdentifier",
|
||||||
|
"value": "thing3",
|
||||||
|
"info": {
|
||||||
|
"type": "TagEngineInfo",
|
||||||
|
"id": "[uuid]",
|
||||||
|
"sketch": "[uuid]",
|
||||||
|
"path": {
|
||||||
|
"__geoMeta": {
|
||||||
|
"id": "[uuid]",
|
||||||
|
"sourceRange": [
|
||||||
|
159,
|
||||||
|
176,
|
||||||
|
0
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"from": [
|
||||||
|
10.0,
|
||||||
|
0.0
|
||||||
|
],
|
||||||
|
"tag": {
|
||||||
|
"end": 175,
|
||||||
|
"start": 168,
|
||||||
|
"type": "TagDeclarator",
|
||||||
|
"value": "thing3"
|
||||||
|
},
|
||||||
|
"to": [
|
||||||
|
0.0,
|
||||||
|
0.0
|
||||||
|
],
|
||||||
|
"type": "ToPoint"
|
||||||
|
},
|
||||||
|
"surface": {
|
||||||
|
"faceId": "[uuid]",
|
||||||
|
"id": "[uuid]",
|
||||||
|
"sourceRange": [
|
||||||
|
159,
|
||||||
|
176,
|
||||||
|
0
|
||||||
|
],
|
||||||
|
"tag": {
|
||||||
|
"end": 175,
|
||||||
|
"start": 168,
|
||||||
|
"type": "TagDeclarator",
|
||||||
|
"value": "thing3"
|
||||||
|
},
|
||||||
|
"type": "extrudePlane"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"__meta": [
|
||||||
|
{
|
||||||
|
"sourceRange": [
|
||||||
|
168,
|
||||||
|
175,
|
||||||
|
0
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"__meta": [
|
||||||
|
{
|
||||||
|
"sourceRange": [
|
||||||
|
35,
|
||||||
|
60,
|
||||||
|
0
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"height": 10.0,
|
||||||
|
"startCapId": "[uuid]",
|
||||||
|
"endCapId": "[uuid]",
|
||||||
|
"edgeCuts": [
|
||||||
|
{
|
||||||
|
"type": "fillet",
|
||||||
|
"id": "[uuid]",
|
||||||
|
"radius": 2.0,
|
||||||
|
"edgeId": "[uuid]",
|
||||||
|
"tag": null
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"__meta": [
|
||||||
|
{
|
||||||
|
"sourceRange": [
|
||||||
|
35,
|
||||||
|
60,
|
||||||
|
0
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"thing": {
|
||||||
|
"type": "TagIdentifier",
|
||||||
|
"type": "TagIdentifier",
|
||||||
|
"value": "thing",
|
||||||
|
"info": {
|
||||||
|
"type": "TagEngineInfo",
|
||||||
|
"id": "[uuid]",
|
||||||
|
"sketch": "[uuid]",
|
||||||
|
"path": {
|
||||||
|
"__geoMeta": {
|
||||||
|
"id": "[uuid]",
|
||||||
|
"sourceRange": [
|
||||||
|
66,
|
||||||
|
90,
|
||||||
|
0
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"from": [
|
||||||
|
0.0,
|
||||||
|
0.0
|
||||||
|
],
|
||||||
|
"tag": {
|
||||||
|
"end": 89,
|
||||||
|
"start": 83,
|
||||||
|
"type": "TagDeclarator",
|
||||||
|
"value": "thing"
|
||||||
|
},
|
||||||
|
"to": [
|
||||||
|
0.0,
|
||||||
|
10.0
|
||||||
|
],
|
||||||
|
"type": "ToPoint"
|
||||||
|
},
|
||||||
|
"surface": {
|
||||||
|
"faceId": "[uuid]",
|
||||||
|
"id": "[uuid]",
|
||||||
|
"sourceRange": [
|
||||||
|
66,
|
||||||
|
90,
|
||||||
|
0
|
||||||
|
],
|
||||||
|
"tag": {
|
||||||
|
"end": 89,
|
||||||
|
"start": 83,
|
||||||
|
"type": "TagDeclarator",
|
||||||
|
"value": "thing"
|
||||||
|
},
|
||||||
|
"type": "extrudePlane"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"__meta": [
|
||||||
|
{
|
||||||
|
"sourceRange": [
|
||||||
|
83,
|
||||||
|
89,
|
||||||
|
0
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"thing1": {
|
||||||
|
"type": "TagIdentifier",
|
||||||
|
"type": "TagIdentifier",
|
||||||
|
"value": "thing1",
|
||||||
|
"info": {
|
||||||
|
"type": "TagEngineInfo",
|
||||||
|
"id": "[uuid]",
|
||||||
|
"sketch": "[uuid]",
|
||||||
|
"path": {
|
||||||
|
"__geoMeta": {
|
||||||
|
"id": "[uuid]",
|
||||||
|
"sourceRange": [
|
||||||
|
96,
|
||||||
|
121,
|
||||||
|
0
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"from": [
|
||||||
|
0.0,
|
||||||
|
10.0
|
||||||
|
],
|
||||||
|
"tag": {
|
||||||
|
"end": 120,
|
||||||
|
"start": 113,
|
||||||
|
"type": "TagDeclarator",
|
||||||
|
"value": "thing1"
|
||||||
|
},
|
||||||
|
"to": [
|
||||||
|
10.0,
|
||||||
|
10.0
|
||||||
|
],
|
||||||
|
"type": "ToPoint"
|
||||||
|
},
|
||||||
|
"surface": {
|
||||||
|
"faceId": "[uuid]",
|
||||||
|
"id": "[uuid]",
|
||||||
|
"sourceRange": [
|
||||||
|
96,
|
||||||
|
121,
|
||||||
|
0
|
||||||
|
],
|
||||||
|
"tag": {
|
||||||
|
"end": 120,
|
||||||
|
"start": 113,
|
||||||
|
"type": "TagDeclarator",
|
||||||
|
"value": "thing1"
|
||||||
|
},
|
||||||
|
"type": "extrudePlane"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"__meta": [
|
||||||
|
{
|
||||||
|
"sourceRange": [
|
||||||
|
113,
|
||||||
|
120,
|
||||||
|
0
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"thing2": {
|
||||||
|
"type": "TagIdentifier",
|
||||||
|
"type": "TagIdentifier",
|
||||||
|
"value": "thing2",
|
||||||
|
"info": {
|
||||||
|
"type": "TagEngineInfo",
|
||||||
|
"id": "[uuid]",
|
||||||
|
"sketch": "[uuid]",
|
||||||
|
"path": {
|
||||||
|
"__geoMeta": {
|
||||||
|
"id": "[uuid]",
|
||||||
|
"sourceRange": [
|
||||||
|
127,
|
||||||
|
153,
|
||||||
|
0
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"from": [
|
||||||
|
10.0,
|
||||||
|
10.0
|
||||||
|
],
|
||||||
|
"tag": {
|
||||||
|
"end": 152,
|
||||||
|
"start": 145,
|
||||||
|
"type": "TagDeclarator",
|
||||||
|
"value": "thing2"
|
||||||
|
},
|
||||||
|
"to": [
|
||||||
|
10.0,
|
||||||
|
0.0
|
||||||
|
],
|
||||||
|
"type": "ToPoint"
|
||||||
|
},
|
||||||
|
"surface": {
|
||||||
|
"faceId": "[uuid]",
|
||||||
|
"id": "[uuid]",
|
||||||
|
"sourceRange": [
|
||||||
|
127,
|
||||||
|
153,
|
||||||
|
0
|
||||||
|
],
|
||||||
|
"tag": {
|
||||||
|
"end": 152,
|
||||||
|
"start": 145,
|
||||||
|
"type": "TagDeclarator",
|
||||||
|
"value": "thing2"
|
||||||
|
},
|
||||||
|
"type": "extrudePlane"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"__meta": [
|
||||||
|
{
|
||||||
|
"sourceRange": [
|
||||||
|
145,
|
||||||
|
152,
|
||||||
|
0
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"thing3": {
|
||||||
|
"type": "TagIdentifier",
|
||||||
|
"type": "TagIdentifier",
|
||||||
|
"value": "thing3",
|
||||||
|
"info": {
|
||||||
|
"type": "TagEngineInfo",
|
||||||
|
"id": "[uuid]",
|
||||||
|
"sketch": "[uuid]",
|
||||||
|
"path": {
|
||||||
|
"__geoMeta": {
|
||||||
|
"id": "[uuid]",
|
||||||
|
"sourceRange": [
|
||||||
|
159,
|
||||||
|
176,
|
||||||
|
0
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"from": [
|
||||||
|
10.0,
|
||||||
|
0.0
|
||||||
|
],
|
||||||
|
"tag": {
|
||||||
|
"end": 175,
|
||||||
|
"start": 168,
|
||||||
|
"type": "TagDeclarator",
|
||||||
|
"value": "thing3"
|
||||||
|
},
|
||||||
|
"to": [
|
||||||
|
0.0,
|
||||||
|
0.0
|
||||||
|
],
|
||||||
|
"type": "ToPoint"
|
||||||
|
},
|
||||||
|
"surface": {
|
||||||
|
"faceId": "[uuid]",
|
||||||
|
"id": "[uuid]",
|
||||||
|
"sourceRange": [
|
||||||
|
159,
|
||||||
|
176,
|
||||||
|
0
|
||||||
|
],
|
||||||
|
"tag": {
|
||||||
|
"end": 175,
|
||||||
|
"start": 168,
|
||||||
|
"type": "TagDeclarator",
|
||||||
|
"value": "thing3"
|
||||||
|
},
|
||||||
|
"type": "extrudePlane"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"__meta": [
|
||||||
|
{
|
||||||
|
"sourceRange": [
|
||||||
|
168,
|
||||||
|
175,
|
||||||
|
0
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"parent": null
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"currentEnv": 0,
|
||||||
|
"return": null
|
||||||
|
}
|
||||||
|
After Width: | Height: | Size: 77 KiB |
@ -0,0 +1,795 @@
|
|||||||
|
---
|
||||||
|
source: kcl/src/simulation_tests.rs
|
||||||
|
description: Result of tokenizing basic_fillet_cube_previous_adjacent.kcl
|
||||||
|
snapshot_kind: text
|
||||||
|
---
|
||||||
|
{
|
||||||
|
"Ok": [
|
||||||
|
{
|
||||||
|
"type": "word",
|
||||||
|
"start": 0,
|
||||||
|
"end": 7,
|
||||||
|
"value": "part001"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "whitespace",
|
||||||
|
"start": 7,
|
||||||
|
"end": 8,
|
||||||
|
"value": " "
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "operator",
|
||||||
|
"start": 8,
|
||||||
|
"end": 9,
|
||||||
|
"value": "="
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "whitespace",
|
||||||
|
"start": 9,
|
||||||
|
"end": 10,
|
||||||
|
"value": " "
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "word",
|
||||||
|
"start": 10,
|
||||||
|
"end": 23,
|
||||||
|
"value": "startSketchOn"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "brace",
|
||||||
|
"start": 23,
|
||||||
|
"end": 24,
|
||||||
|
"value": "("
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "string",
|
||||||
|
"start": 24,
|
||||||
|
"end": 28,
|
||||||
|
"value": "'XY'"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "brace",
|
||||||
|
"start": 28,
|
||||||
|
"end": 29,
|
||||||
|
"value": ")"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "whitespace",
|
||||||
|
"start": 29,
|
||||||
|
"end": 32,
|
||||||
|
"value": "\n "
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "operator",
|
||||||
|
"start": 32,
|
||||||
|
"end": 34,
|
||||||
|
"value": "|>"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "whitespace",
|
||||||
|
"start": 34,
|
||||||
|
"end": 35,
|
||||||
|
"value": " "
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "word",
|
||||||
|
"start": 35,
|
||||||
|
"end": 49,
|
||||||
|
"value": "startProfileAt"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "brace",
|
||||||
|
"start": 49,
|
||||||
|
"end": 50,
|
||||||
|
"value": "("
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "brace",
|
||||||
|
"start": 50,
|
||||||
|
"end": 51,
|
||||||
|
"value": "["
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "number",
|
||||||
|
"start": 51,
|
||||||
|
"end": 52,
|
||||||
|
"value": "0"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "comma",
|
||||||
|
"start": 52,
|
||||||
|
"end": 53,
|
||||||
|
"value": ","
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "whitespace",
|
||||||
|
"start": 53,
|
||||||
|
"end": 54,
|
||||||
|
"value": " "
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "number",
|
||||||
|
"start": 54,
|
||||||
|
"end": 55,
|
||||||
|
"value": "0"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "brace",
|
||||||
|
"start": 55,
|
||||||
|
"end": 56,
|
||||||
|
"value": "]"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "comma",
|
||||||
|
"start": 56,
|
||||||
|
"end": 57,
|
||||||
|
"value": ","
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "whitespace",
|
||||||
|
"start": 57,
|
||||||
|
"end": 58,
|
||||||
|
"value": " "
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "operator",
|
||||||
|
"start": 58,
|
||||||
|
"end": 59,
|
||||||
|
"value": "%"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "brace",
|
||||||
|
"start": 59,
|
||||||
|
"end": 60,
|
||||||
|
"value": ")"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "whitespace",
|
||||||
|
"start": 60,
|
||||||
|
"end": 63,
|
||||||
|
"value": "\n "
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "operator",
|
||||||
|
"start": 63,
|
||||||
|
"end": 65,
|
||||||
|
"value": "|>"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "whitespace",
|
||||||
|
"start": 65,
|
||||||
|
"end": 66,
|
||||||
|
"value": " "
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "word",
|
||||||
|
"start": 66,
|
||||||
|
"end": 70,
|
||||||
|
"value": "line"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "brace",
|
||||||
|
"start": 70,
|
||||||
|
"end": 71,
|
||||||
|
"value": "("
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "brace",
|
||||||
|
"start": 71,
|
||||||
|
"end": 72,
|
||||||
|
"value": "["
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "number",
|
||||||
|
"start": 72,
|
||||||
|
"end": 73,
|
||||||
|
"value": "0"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "comma",
|
||||||
|
"start": 73,
|
||||||
|
"end": 74,
|
||||||
|
"value": ","
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "whitespace",
|
||||||
|
"start": 74,
|
||||||
|
"end": 75,
|
||||||
|
"value": " "
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "number",
|
||||||
|
"start": 75,
|
||||||
|
"end": 77,
|
||||||
|
"value": "10"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "brace",
|
||||||
|
"start": 77,
|
||||||
|
"end": 78,
|
||||||
|
"value": "]"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "comma",
|
||||||
|
"start": 78,
|
||||||
|
"end": 79,
|
||||||
|
"value": ","
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "whitespace",
|
||||||
|
"start": 79,
|
||||||
|
"end": 80,
|
||||||
|
"value": " "
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "operator",
|
||||||
|
"start": 80,
|
||||||
|
"end": 81,
|
||||||
|
"value": "%"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "comma",
|
||||||
|
"start": 81,
|
||||||
|
"end": 82,
|
||||||
|
"value": ","
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "whitespace",
|
||||||
|
"start": 82,
|
||||||
|
"end": 83,
|
||||||
|
"value": " "
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "dollar",
|
||||||
|
"start": 83,
|
||||||
|
"end": 84,
|
||||||
|
"value": "$"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "word",
|
||||||
|
"start": 84,
|
||||||
|
"end": 89,
|
||||||
|
"value": "thing"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "brace",
|
||||||
|
"start": 89,
|
||||||
|
"end": 90,
|
||||||
|
"value": ")"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "whitespace",
|
||||||
|
"start": 90,
|
||||||
|
"end": 93,
|
||||||
|
"value": "\n "
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "operator",
|
||||||
|
"start": 93,
|
||||||
|
"end": 95,
|
||||||
|
"value": "|>"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "whitespace",
|
||||||
|
"start": 95,
|
||||||
|
"end": 96,
|
||||||
|
"value": " "
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "word",
|
||||||
|
"start": 96,
|
||||||
|
"end": 100,
|
||||||
|
"value": "line"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "brace",
|
||||||
|
"start": 100,
|
||||||
|
"end": 101,
|
||||||
|
"value": "("
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "brace",
|
||||||
|
"start": 101,
|
||||||
|
"end": 102,
|
||||||
|
"value": "["
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "number",
|
||||||
|
"start": 102,
|
||||||
|
"end": 104,
|
||||||
|
"value": "10"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "comma",
|
||||||
|
"start": 104,
|
||||||
|
"end": 105,
|
||||||
|
"value": ","
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "whitespace",
|
||||||
|
"start": 105,
|
||||||
|
"end": 106,
|
||||||
|
"value": " "
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "number",
|
||||||
|
"start": 106,
|
||||||
|
"end": 107,
|
||||||
|
"value": "0"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "brace",
|
||||||
|
"start": 107,
|
||||||
|
"end": 108,
|
||||||
|
"value": "]"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "comma",
|
||||||
|
"start": 108,
|
||||||
|
"end": 109,
|
||||||
|
"value": ","
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "whitespace",
|
||||||
|
"start": 109,
|
||||||
|
"end": 110,
|
||||||
|
"value": " "
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "operator",
|
||||||
|
"start": 110,
|
||||||
|
"end": 111,
|
||||||
|
"value": "%"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "comma",
|
||||||
|
"start": 111,
|
||||||
|
"end": 112,
|
||||||
|
"value": ","
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "whitespace",
|
||||||
|
"start": 112,
|
||||||
|
"end": 113,
|
||||||
|
"value": " "
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "dollar",
|
||||||
|
"start": 113,
|
||||||
|
"end": 114,
|
||||||
|
"value": "$"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "word",
|
||||||
|
"start": 114,
|
||||||
|
"end": 120,
|
||||||
|
"value": "thing1"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "brace",
|
||||||
|
"start": 120,
|
||||||
|
"end": 121,
|
||||||
|
"value": ")"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "whitespace",
|
||||||
|
"start": 121,
|
||||||
|
"end": 124,
|
||||||
|
"value": "\n "
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "operator",
|
||||||
|
"start": 124,
|
||||||
|
"end": 126,
|
||||||
|
"value": "|>"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "whitespace",
|
||||||
|
"start": 126,
|
||||||
|
"end": 127,
|
||||||
|
"value": " "
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "word",
|
||||||
|
"start": 127,
|
||||||
|
"end": 131,
|
||||||
|
"value": "line"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "brace",
|
||||||
|
"start": 131,
|
||||||
|
"end": 132,
|
||||||
|
"value": "("
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "brace",
|
||||||
|
"start": 132,
|
||||||
|
"end": 133,
|
||||||
|
"value": "["
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "number",
|
||||||
|
"start": 133,
|
||||||
|
"end": 134,
|
||||||
|
"value": "0"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "comma",
|
||||||
|
"start": 134,
|
||||||
|
"end": 135,
|
||||||
|
"value": ","
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "whitespace",
|
||||||
|
"start": 135,
|
||||||
|
"end": 136,
|
||||||
|
"value": " "
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "operator",
|
||||||
|
"start": 136,
|
||||||
|
"end": 137,
|
||||||
|
"value": "-"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "number",
|
||||||
|
"start": 137,
|
||||||
|
"end": 139,
|
||||||
|
"value": "10"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "brace",
|
||||||
|
"start": 139,
|
||||||
|
"end": 140,
|
||||||
|
"value": "]"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "comma",
|
||||||
|
"start": 140,
|
||||||
|
"end": 141,
|
||||||
|
"value": ","
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "whitespace",
|
||||||
|
"start": 141,
|
||||||
|
"end": 142,
|
||||||
|
"value": " "
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "operator",
|
||||||
|
"start": 142,
|
||||||
|
"end": 143,
|
||||||
|
"value": "%"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "comma",
|
||||||
|
"start": 143,
|
||||||
|
"end": 144,
|
||||||
|
"value": ","
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "whitespace",
|
||||||
|
"start": 144,
|
||||||
|
"end": 145,
|
||||||
|
"value": " "
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "dollar",
|
||||||
|
"start": 145,
|
||||||
|
"end": 146,
|
||||||
|
"value": "$"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "word",
|
||||||
|
"start": 146,
|
||||||
|
"end": 152,
|
||||||
|
"value": "thing2"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "brace",
|
||||||
|
"start": 152,
|
||||||
|
"end": 153,
|
||||||
|
"value": ")"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "whitespace",
|
||||||
|
"start": 153,
|
||||||
|
"end": 156,
|
||||||
|
"value": "\n "
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "operator",
|
||||||
|
"start": 156,
|
||||||
|
"end": 158,
|
||||||
|
"value": "|>"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "whitespace",
|
||||||
|
"start": 158,
|
||||||
|
"end": 159,
|
||||||
|
"value": " "
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "word",
|
||||||
|
"start": 159,
|
||||||
|
"end": 164,
|
||||||
|
"value": "close"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "brace",
|
||||||
|
"start": 164,
|
||||||
|
"end": 165,
|
||||||
|
"value": "("
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "operator",
|
||||||
|
"start": 165,
|
||||||
|
"end": 166,
|
||||||
|
"value": "%"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "comma",
|
||||||
|
"start": 166,
|
||||||
|
"end": 167,
|
||||||
|
"value": ","
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "whitespace",
|
||||||
|
"start": 167,
|
||||||
|
"end": 168,
|
||||||
|
"value": " "
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "dollar",
|
||||||
|
"start": 168,
|
||||||
|
"end": 169,
|
||||||
|
"value": "$"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "word",
|
||||||
|
"start": 169,
|
||||||
|
"end": 175,
|
||||||
|
"value": "thing3"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "brace",
|
||||||
|
"start": 175,
|
||||||
|
"end": 176,
|
||||||
|
"value": ")"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "whitespace",
|
||||||
|
"start": 176,
|
||||||
|
"end": 179,
|
||||||
|
"value": "\n "
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "operator",
|
||||||
|
"start": 179,
|
||||||
|
"end": 181,
|
||||||
|
"value": "|>"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "whitespace",
|
||||||
|
"start": 181,
|
||||||
|
"end": 182,
|
||||||
|
"value": " "
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "word",
|
||||||
|
"start": 182,
|
||||||
|
"end": 189,
|
||||||
|
"value": "extrude"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "brace",
|
||||||
|
"start": 189,
|
||||||
|
"end": 190,
|
||||||
|
"value": "("
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "number",
|
||||||
|
"start": 190,
|
||||||
|
"end": 192,
|
||||||
|
"value": "10"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "comma",
|
||||||
|
"start": 192,
|
||||||
|
"end": 193,
|
||||||
|
"value": ","
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "whitespace",
|
||||||
|
"start": 193,
|
||||||
|
"end": 194,
|
||||||
|
"value": " "
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "operator",
|
||||||
|
"start": 194,
|
||||||
|
"end": 195,
|
||||||
|
"value": "%"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "brace",
|
||||||
|
"start": 195,
|
||||||
|
"end": 196,
|
||||||
|
"value": ")"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "whitespace",
|
||||||
|
"start": 196,
|
||||||
|
"end": 199,
|
||||||
|
"value": "\n "
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "operator",
|
||||||
|
"start": 199,
|
||||||
|
"end": 201,
|
||||||
|
"value": "|>"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "whitespace",
|
||||||
|
"start": 201,
|
||||||
|
"end": 202,
|
||||||
|
"value": " "
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "word",
|
||||||
|
"start": 202,
|
||||||
|
"end": 208,
|
||||||
|
"value": "fillet"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "brace",
|
||||||
|
"start": 208,
|
||||||
|
"end": 209,
|
||||||
|
"value": "("
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "brace",
|
||||||
|
"start": 209,
|
||||||
|
"end": 210,
|
||||||
|
"value": "{"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "whitespace",
|
||||||
|
"start": 210,
|
||||||
|
"end": 218,
|
||||||
|
"value": "\n "
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "word",
|
||||||
|
"start": 218,
|
||||||
|
"end": 224,
|
||||||
|
"value": "radius"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "colon",
|
||||||
|
"start": 224,
|
||||||
|
"end": 225,
|
||||||
|
"value": ":"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "whitespace",
|
||||||
|
"start": 225,
|
||||||
|
"end": 226,
|
||||||
|
"value": " "
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "number",
|
||||||
|
"start": 226,
|
||||||
|
"end": 227,
|
||||||
|
"value": "2"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "comma",
|
||||||
|
"start": 227,
|
||||||
|
"end": 228,
|
||||||
|
"value": ","
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "whitespace",
|
||||||
|
"start": 228,
|
||||||
|
"end": 236,
|
||||||
|
"value": "\n "
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "word",
|
||||||
|
"start": 236,
|
||||||
|
"end": 240,
|
||||||
|
"value": "tags"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "colon",
|
||||||
|
"start": 240,
|
||||||
|
"end": 241,
|
||||||
|
"value": ":"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "whitespace",
|
||||||
|
"start": 241,
|
||||||
|
"end": 242,
|
||||||
|
"value": " "
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "brace",
|
||||||
|
"start": 242,
|
||||||
|
"end": 243,
|
||||||
|
"value": "["
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "word",
|
||||||
|
"start": 243,
|
||||||
|
"end": 266,
|
||||||
|
"value": "getPreviousAdjacentEdge"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "brace",
|
||||||
|
"start": 266,
|
||||||
|
"end": 267,
|
||||||
|
"value": "("
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "word",
|
||||||
|
"start": 267,
|
||||||
|
"end": 273,
|
||||||
|
"value": "thing3"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "brace",
|
||||||
|
"start": 273,
|
||||||
|
"end": 274,
|
||||||
|
"value": ")"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "brace",
|
||||||
|
"start": 274,
|
||||||
|
"end": 275,
|
||||||
|
"value": "]"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "whitespace",
|
||||||
|
"start": 275,
|
||||||
|
"end": 281,
|
||||||
|
"value": "\n "
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "brace",
|
||||||
|
"start": 281,
|
||||||
|
"end": 282,
|
||||||
|
"value": "}"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "comma",
|
||||||
|
"start": 282,
|
||||||
|
"end": 283,
|
||||||
|
"value": ","
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "whitespace",
|
||||||
|
"start": 283,
|
||||||
|
"end": 284,
|
||||||
|
"value": " "
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "operator",
|
||||||
|
"start": 284,
|
||||||
|
"end": 285,
|
||||||
|
"value": "%"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "brace",
|
||||||
|
"start": 285,
|
||||||
|
"end": 286,
|
||||||
|
"value": ")"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "whitespace",
|
||||||
|
"start": 286,
|
||||||
|
"end": 287,
|
||||||
|
"value": "\n"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
396
src/wasm-lib/kcl/tests/basic_fillet_cube_start/ast.snap
Normal file
@ -0,0 +1,396 @@
|
|||||||
|
---
|
||||||
|
source: kcl/src/simulation_tests.rs
|
||||||
|
description: Result of parsing basic_fillet_cube_start.kcl
|
||||||
|
snapshot_kind: text
|
||||||
|
---
|
||||||
|
{
|
||||||
|
"Ok": {
|
||||||
|
"body": [
|
||||||
|
{
|
||||||
|
"declarations": [
|
||||||
|
{
|
||||||
|
"end": 231,
|
||||||
|
"id": {
|
||||||
|
"end": 7,
|
||||||
|
"name": "part001",
|
||||||
|
"start": 0,
|
||||||
|
"type": "Identifier"
|
||||||
|
},
|
||||||
|
"init": {
|
||||||
|
"body": [
|
||||||
|
{
|
||||||
|
"arguments": [
|
||||||
|
{
|
||||||
|
"end": 28,
|
||||||
|
"raw": "'XY'",
|
||||||
|
"start": 24,
|
||||||
|
"type": "Literal",
|
||||||
|
"type": "Literal",
|
||||||
|
"value": "XY"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"callee": {
|
||||||
|
"end": 23,
|
||||||
|
"name": "startSketchOn",
|
||||||
|
"start": 10,
|
||||||
|
"type": "Identifier"
|
||||||
|
},
|
||||||
|
"end": 29,
|
||||||
|
"optional": false,
|
||||||
|
"start": 10,
|
||||||
|
"type": "CallExpression",
|
||||||
|
"type": "CallExpression"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"arguments": [
|
||||||
|
{
|
||||||
|
"elements": [
|
||||||
|
{
|
||||||
|
"end": 52,
|
||||||
|
"raw": "0",
|
||||||
|
"start": 51,
|
||||||
|
"type": "Literal",
|
||||||
|
"type": "Literal",
|
||||||
|
"value": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"end": 55,
|
||||||
|
"raw": "0",
|
||||||
|
"start": 54,
|
||||||
|
"type": "Literal",
|
||||||
|
"type": "Literal",
|
||||||
|
"value": 0
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"end": 56,
|
||||||
|
"start": 50,
|
||||||
|
"type": "ArrayExpression",
|
||||||
|
"type": "ArrayExpression"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"end": 59,
|
||||||
|
"start": 58,
|
||||||
|
"type": "PipeSubstitution",
|
||||||
|
"type": "PipeSubstitution"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"callee": {
|
||||||
|
"end": 49,
|
||||||
|
"name": "startProfileAt",
|
||||||
|
"start": 35,
|
||||||
|
"type": "Identifier"
|
||||||
|
},
|
||||||
|
"end": 60,
|
||||||
|
"optional": false,
|
||||||
|
"start": 35,
|
||||||
|
"type": "CallExpression",
|
||||||
|
"type": "CallExpression"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"arguments": [
|
||||||
|
{
|
||||||
|
"elements": [
|
||||||
|
{
|
||||||
|
"end": 73,
|
||||||
|
"raw": "0",
|
||||||
|
"start": 72,
|
||||||
|
"type": "Literal",
|
||||||
|
"type": "Literal",
|
||||||
|
"value": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"end": 77,
|
||||||
|
"raw": "10",
|
||||||
|
"start": 75,
|
||||||
|
"type": "Literal",
|
||||||
|
"type": "Literal",
|
||||||
|
"value": 10
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"end": 78,
|
||||||
|
"start": 71,
|
||||||
|
"type": "ArrayExpression",
|
||||||
|
"type": "ArrayExpression"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"end": 81,
|
||||||
|
"start": 80,
|
||||||
|
"type": "PipeSubstitution",
|
||||||
|
"type": "PipeSubstitution"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"end": 89,
|
||||||
|
"start": 83,
|
||||||
|
"type": "TagDeclarator",
|
||||||
|
"type": "TagDeclarator",
|
||||||
|
"value": "thing"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"callee": {
|
||||||
|
"end": 70,
|
||||||
|
"name": "line",
|
||||||
|
"start": 66,
|
||||||
|
"type": "Identifier"
|
||||||
|
},
|
||||||
|
"end": 90,
|
||||||
|
"optional": false,
|
||||||
|
"start": 66,
|
||||||
|
"type": "CallExpression",
|
||||||
|
"type": "CallExpression"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"arguments": [
|
||||||
|
{
|
||||||
|
"elements": [
|
||||||
|
{
|
||||||
|
"end": 104,
|
||||||
|
"raw": "10",
|
||||||
|
"start": 102,
|
||||||
|
"type": "Literal",
|
||||||
|
"type": "Literal",
|
||||||
|
"value": 10
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"end": 107,
|
||||||
|
"raw": "0",
|
||||||
|
"start": 106,
|
||||||
|
"type": "Literal",
|
||||||
|
"type": "Literal",
|
||||||
|
"value": 0
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"end": 108,
|
||||||
|
"start": 101,
|
||||||
|
"type": "ArrayExpression",
|
||||||
|
"type": "ArrayExpression"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"end": 111,
|
||||||
|
"start": 110,
|
||||||
|
"type": "PipeSubstitution",
|
||||||
|
"type": "PipeSubstitution"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"callee": {
|
||||||
|
"end": 100,
|
||||||
|
"name": "line",
|
||||||
|
"start": 96,
|
||||||
|
"type": "Identifier"
|
||||||
|
},
|
||||||
|
"end": 112,
|
||||||
|
"optional": false,
|
||||||
|
"start": 96,
|
||||||
|
"type": "CallExpression",
|
||||||
|
"type": "CallExpression"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"arguments": [
|
||||||
|
{
|
||||||
|
"elements": [
|
||||||
|
{
|
||||||
|
"end": 125,
|
||||||
|
"raw": "0",
|
||||||
|
"start": 124,
|
||||||
|
"type": "Literal",
|
||||||
|
"type": "Literal",
|
||||||
|
"value": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"argument": {
|
||||||
|
"end": 130,
|
||||||
|
"raw": "10",
|
||||||
|
"start": 128,
|
||||||
|
"type": "Literal",
|
||||||
|
"type": "Literal",
|
||||||
|
"value": 10
|
||||||
|
},
|
||||||
|
"end": 130,
|
||||||
|
"operator": "-",
|
||||||
|
"start": 127,
|
||||||
|
"type": "UnaryExpression",
|
||||||
|
"type": "UnaryExpression"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"end": 131,
|
||||||
|
"start": 123,
|
||||||
|
"type": "ArrayExpression",
|
||||||
|
"type": "ArrayExpression"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"end": 134,
|
||||||
|
"start": 133,
|
||||||
|
"type": "PipeSubstitution",
|
||||||
|
"type": "PipeSubstitution"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"end": 143,
|
||||||
|
"start": 136,
|
||||||
|
"type": "TagDeclarator",
|
||||||
|
"type": "TagDeclarator",
|
||||||
|
"value": "thing2"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"callee": {
|
||||||
|
"end": 122,
|
||||||
|
"name": "line",
|
||||||
|
"start": 118,
|
||||||
|
"type": "Identifier"
|
||||||
|
},
|
||||||
|
"end": 144,
|
||||||
|
"optional": false,
|
||||||
|
"start": 118,
|
||||||
|
"type": "CallExpression",
|
||||||
|
"type": "CallExpression"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"arguments": [
|
||||||
|
{
|
||||||
|
"end": 157,
|
||||||
|
"start": 156,
|
||||||
|
"type": "PipeSubstitution",
|
||||||
|
"type": "PipeSubstitution"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"callee": {
|
||||||
|
"end": 155,
|
||||||
|
"name": "close",
|
||||||
|
"start": 150,
|
||||||
|
"type": "Identifier"
|
||||||
|
},
|
||||||
|
"end": 158,
|
||||||
|
"optional": false,
|
||||||
|
"start": 150,
|
||||||
|
"type": "CallExpression",
|
||||||
|
"type": "CallExpression"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"arguments": [
|
||||||
|
{
|
||||||
|
"end": 174,
|
||||||
|
"raw": "10",
|
||||||
|
"start": 172,
|
||||||
|
"type": "Literal",
|
||||||
|
"type": "Literal",
|
||||||
|
"value": 10
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"end": 177,
|
||||||
|
"start": 176,
|
||||||
|
"type": "PipeSubstitution",
|
||||||
|
"type": "PipeSubstitution"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"callee": {
|
||||||
|
"end": 171,
|
||||||
|
"name": "extrude",
|
||||||
|
"start": 164,
|
||||||
|
"type": "Identifier"
|
||||||
|
},
|
||||||
|
"end": 178,
|
||||||
|
"optional": false,
|
||||||
|
"start": 164,
|
||||||
|
"type": "CallExpression",
|
||||||
|
"type": "CallExpression"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"arguments": [
|
||||||
|
{
|
||||||
|
"end": 227,
|
||||||
|
"properties": [
|
||||||
|
{
|
||||||
|
"end": 202,
|
||||||
|
"key": {
|
||||||
|
"end": 199,
|
||||||
|
"name": "radius",
|
||||||
|
"start": 193,
|
||||||
|
"type": "Identifier"
|
||||||
|
},
|
||||||
|
"start": 193,
|
||||||
|
"type": "ObjectProperty",
|
||||||
|
"value": {
|
||||||
|
"end": 202,
|
||||||
|
"raw": "2",
|
||||||
|
"start": 201,
|
||||||
|
"type": "Literal",
|
||||||
|
"type": "Literal",
|
||||||
|
"value": 2
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"end": 225,
|
||||||
|
"key": {
|
||||||
|
"end": 208,
|
||||||
|
"name": "tags",
|
||||||
|
"start": 204,
|
||||||
|
"type": "Identifier"
|
||||||
|
},
|
||||||
|
"start": 204,
|
||||||
|
"type": "ObjectProperty",
|
||||||
|
"value": {
|
||||||
|
"elements": [
|
||||||
|
{
|
||||||
|
"end": 216,
|
||||||
|
"name": "thing",
|
||||||
|
"start": 211,
|
||||||
|
"type": "Identifier",
|
||||||
|
"type": "Identifier"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"end": 224,
|
||||||
|
"name": "thing2",
|
||||||
|
"start": 218,
|
||||||
|
"type": "Identifier",
|
||||||
|
"type": "Identifier"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"end": 225,
|
||||||
|
"start": 210,
|
||||||
|
"type": "ArrayExpression",
|
||||||
|
"type": "ArrayExpression"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"start": 191,
|
||||||
|
"type": "ObjectExpression",
|
||||||
|
"type": "ObjectExpression"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"end": 230,
|
||||||
|
"start": 229,
|
||||||
|
"type": "PipeSubstitution",
|
||||||
|
"type": "PipeSubstitution"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"callee": {
|
||||||
|
"end": 190,
|
||||||
|
"name": "fillet",
|
||||||
|
"start": 184,
|
||||||
|
"type": "Identifier"
|
||||||
|
},
|
||||||
|
"end": 231,
|
||||||
|
"optional": false,
|
||||||
|
"start": 184,
|
||||||
|
"type": "CallExpression",
|
||||||
|
"type": "CallExpression"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"end": 231,
|
||||||
|
"start": 10,
|
||||||
|
"type": "PipeExpression",
|
||||||
|
"type": "PipeExpression"
|
||||||
|
},
|
||||||
|
"start": 0,
|
||||||
|
"type": "VariableDeclarator"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"end": 231,
|
||||||
|
"kind": "const",
|
||||||
|
"start": 0,
|
||||||
|
"type": "VariableDeclaration",
|
||||||
|
"type": "VariableDeclaration"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"end": 232,
|
||||||
|
"start": 0
|
||||||
|
}
|
||||||
|
}
|
||||||
8
src/wasm-lib/kcl/tests/basic_fillet_cube_start/input.kcl
Normal file
@ -0,0 +1,8 @@
|
|||||||
|
part001 = startSketchOn('XY')
|
||||||
|
|> startProfileAt([0, 0], %)
|
||||||
|
|> line([0, 10], %, $thing)
|
||||||
|
|> line([10, 0], %)
|
||||||
|
|> line([0, -10], %, $thing2)
|
||||||
|
|> close(%)
|
||||||
|
|> extrude(10, %)
|
||||||
|
|> fillet({ radius: 2, tags: [thing, thing2] }, %)
|
||||||
@ -0,0 +1,515 @@
|
|||||||
|
---
|
||||||
|
source: kcl/src/simulation_tests.rs
|
||||||
|
description: Program memory after executing basic_fillet_cube_start.kcl
|
||||||
|
snapshot_kind: text
|
||||||
|
---
|
||||||
|
{
|
||||||
|
"environments": [
|
||||||
|
{
|
||||||
|
"bindings": {
|
||||||
|
"HALF_TURN": {
|
||||||
|
"type": "Number",
|
||||||
|
"value": 180.0,
|
||||||
|
"__meta": []
|
||||||
|
},
|
||||||
|
"QUARTER_TURN": {
|
||||||
|
"type": "Number",
|
||||||
|
"value": 90.0,
|
||||||
|
"__meta": []
|
||||||
|
},
|
||||||
|
"THREE_QUARTER_TURN": {
|
||||||
|
"type": "Number",
|
||||||
|
"value": 270.0,
|
||||||
|
"__meta": []
|
||||||
|
},
|
||||||
|
"ZERO": {
|
||||||
|
"type": "Number",
|
||||||
|
"value": 0.0,
|
||||||
|
"__meta": []
|
||||||
|
},
|
||||||
|
"part001": {
|
||||||
|
"type": "Solid",
|
||||||
|
"type": "Solid",
|
||||||
|
"id": "[uuid]",
|
||||||
|
"value": [
|
||||||
|
{
|
||||||
|
"faceId": "[uuid]",
|
||||||
|
"id": "[uuid]",
|
||||||
|
"sourceRange": [
|
||||||
|
66,
|
||||||
|
90,
|
||||||
|
0
|
||||||
|
],
|
||||||
|
"tag": {
|
||||||
|
"end": 89,
|
||||||
|
"start": 83,
|
||||||
|
"type": "TagDeclarator",
|
||||||
|
"value": "thing"
|
||||||
|
},
|
||||||
|
"type": "extrudePlane"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"faceId": "[uuid]",
|
||||||
|
"id": "[uuid]",
|
||||||
|
"sourceRange": [
|
||||||
|
96,
|
||||||
|
112,
|
||||||
|
0
|
||||||
|
],
|
||||||
|
"tag": null,
|
||||||
|
"type": "extrudePlane"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"faceId": "[uuid]",
|
||||||
|
"id": "[uuid]",
|
||||||
|
"sourceRange": [
|
||||||
|
118,
|
||||||
|
144,
|
||||||
|
0
|
||||||
|
],
|
||||||
|
"tag": {
|
||||||
|
"end": 143,
|
||||||
|
"start": 136,
|
||||||
|
"type": "TagDeclarator",
|
||||||
|
"value": "thing2"
|
||||||
|
},
|
||||||
|
"type": "extrudePlane"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"faceId": "[uuid]",
|
||||||
|
"id": "[uuid]",
|
||||||
|
"sourceRange": [
|
||||||
|
150,
|
||||||
|
158,
|
||||||
|
0
|
||||||
|
],
|
||||||
|
"tag": null,
|
||||||
|
"type": "extrudePlane"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"sketch": {
|
||||||
|
"type": "Sketch",
|
||||||
|
"id": "[uuid]",
|
||||||
|
"paths": [
|
||||||
|
{
|
||||||
|
"__geoMeta": {
|
||||||
|
"id": "[uuid]",
|
||||||
|
"sourceRange": [
|
||||||
|
66,
|
||||||
|
90,
|
||||||
|
0
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"from": [
|
||||||
|
0.0,
|
||||||
|
0.0
|
||||||
|
],
|
||||||
|
"tag": {
|
||||||
|
"end": 89,
|
||||||
|
"start": 83,
|
||||||
|
"type": "TagDeclarator",
|
||||||
|
"value": "thing"
|
||||||
|
},
|
||||||
|
"to": [
|
||||||
|
0.0,
|
||||||
|
10.0
|
||||||
|
],
|
||||||
|
"type": "ToPoint"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"__geoMeta": {
|
||||||
|
"id": "[uuid]",
|
||||||
|
"sourceRange": [
|
||||||
|
96,
|
||||||
|
112,
|
||||||
|
0
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"from": [
|
||||||
|
0.0,
|
||||||
|
10.0
|
||||||
|
],
|
||||||
|
"tag": null,
|
||||||
|
"to": [
|
||||||
|
10.0,
|
||||||
|
10.0
|
||||||
|
],
|
||||||
|
"type": "ToPoint"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"__geoMeta": {
|
||||||
|
"id": "[uuid]",
|
||||||
|
"sourceRange": [
|
||||||
|
118,
|
||||||
|
144,
|
||||||
|
0
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"from": [
|
||||||
|
10.0,
|
||||||
|
10.0
|
||||||
|
],
|
||||||
|
"tag": {
|
||||||
|
"end": 143,
|
||||||
|
"start": 136,
|
||||||
|
"type": "TagDeclarator",
|
||||||
|
"value": "thing2"
|
||||||
|
},
|
||||||
|
"to": [
|
||||||
|
10.0,
|
||||||
|
0.0
|
||||||
|
],
|
||||||
|
"type": "ToPoint"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"__geoMeta": {
|
||||||
|
"id": "[uuid]",
|
||||||
|
"sourceRange": [
|
||||||
|
150,
|
||||||
|
158,
|
||||||
|
0
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"from": [
|
||||||
|
10.0,
|
||||||
|
0.0
|
||||||
|
],
|
||||||
|
"tag": null,
|
||||||
|
"to": [
|
||||||
|
0.0,
|
||||||
|
0.0
|
||||||
|
],
|
||||||
|
"type": "ToPoint"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"on": {
|
||||||
|
"type": "plane",
|
||||||
|
"id": "[uuid]",
|
||||||
|
"value": "XY",
|
||||||
|
"origin": {
|
||||||
|
"x": 0.0,
|
||||||
|
"y": 0.0,
|
||||||
|
"z": 0.0
|
||||||
|
},
|
||||||
|
"xAxis": {
|
||||||
|
"x": 1.0,
|
||||||
|
"y": 0.0,
|
||||||
|
"z": 0.0
|
||||||
|
},
|
||||||
|
"yAxis": {
|
||||||
|
"x": 0.0,
|
||||||
|
"y": 1.0,
|
||||||
|
"z": 0.0
|
||||||
|
},
|
||||||
|
"zAxis": {
|
||||||
|
"x": 0.0,
|
||||||
|
"y": 0.0,
|
||||||
|
"z": 1.0
|
||||||
|
},
|
||||||
|
"__meta": []
|
||||||
|
},
|
||||||
|
"start": {
|
||||||
|
"from": [
|
||||||
|
0.0,
|
||||||
|
0.0
|
||||||
|
],
|
||||||
|
"to": [
|
||||||
|
0.0,
|
||||||
|
0.0
|
||||||
|
],
|
||||||
|
"tag": null,
|
||||||
|
"__geoMeta": {
|
||||||
|
"id": "[uuid]",
|
||||||
|
"sourceRange": [
|
||||||
|
35,
|
||||||
|
60,
|
||||||
|
0
|
||||||
|
]
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"tags": {
|
||||||
|
"thing": {
|
||||||
|
"type": "TagIdentifier",
|
||||||
|
"value": "thing",
|
||||||
|
"info": {
|
||||||
|
"type": "TagEngineInfo",
|
||||||
|
"id": "[uuid]",
|
||||||
|
"sketch": "[uuid]",
|
||||||
|
"path": {
|
||||||
|
"__geoMeta": {
|
||||||
|
"id": "[uuid]",
|
||||||
|
"sourceRange": [
|
||||||
|
66,
|
||||||
|
90,
|
||||||
|
0
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"from": [
|
||||||
|
0.0,
|
||||||
|
0.0
|
||||||
|
],
|
||||||
|
"tag": {
|
||||||
|
"end": 89,
|
||||||
|
"start": 83,
|
||||||
|
"type": "TagDeclarator",
|
||||||
|
"value": "thing"
|
||||||
|
},
|
||||||
|
"to": [
|
||||||
|
0.0,
|
||||||
|
10.0
|
||||||
|
],
|
||||||
|
"type": "ToPoint"
|
||||||
|
},
|
||||||
|
"surface": {
|
||||||
|
"faceId": "[uuid]",
|
||||||
|
"id": "[uuid]",
|
||||||
|
"sourceRange": [
|
||||||
|
66,
|
||||||
|
90,
|
||||||
|
0
|
||||||
|
],
|
||||||
|
"tag": {
|
||||||
|
"end": 89,
|
||||||
|
"start": 83,
|
||||||
|
"type": "TagDeclarator",
|
||||||
|
"value": "thing"
|
||||||
|
},
|
||||||
|
"type": "extrudePlane"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"__meta": [
|
||||||
|
{
|
||||||
|
"sourceRange": [
|
||||||
|
83,
|
||||||
|
89,
|
||||||
|
0
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"thing2": {
|
||||||
|
"type": "TagIdentifier",
|
||||||
|
"value": "thing2",
|
||||||
|
"info": {
|
||||||
|
"type": "TagEngineInfo",
|
||||||
|
"id": "[uuid]",
|
||||||
|
"sketch": "[uuid]",
|
||||||
|
"path": {
|
||||||
|
"__geoMeta": {
|
||||||
|
"id": "[uuid]",
|
||||||
|
"sourceRange": [
|
||||||
|
118,
|
||||||
|
144,
|
||||||
|
0
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"from": [
|
||||||
|
10.0,
|
||||||
|
10.0
|
||||||
|
],
|
||||||
|
"tag": {
|
||||||
|
"end": 143,
|
||||||
|
"start": 136,
|
||||||
|
"type": "TagDeclarator",
|
||||||
|
"value": "thing2"
|
||||||
|
},
|
||||||
|
"to": [
|
||||||
|
10.0,
|
||||||
|
0.0
|
||||||
|
],
|
||||||
|
"type": "ToPoint"
|
||||||
|
},
|
||||||
|
"surface": {
|
||||||
|
"faceId": "[uuid]",
|
||||||
|
"id": "[uuid]",
|
||||||
|
"sourceRange": [
|
||||||
|
118,
|
||||||
|
144,
|
||||||
|
0
|
||||||
|
],
|
||||||
|
"tag": {
|
||||||
|
"end": 143,
|
||||||
|
"start": 136,
|
||||||
|
"type": "TagDeclarator",
|
||||||
|
"value": "thing2"
|
||||||
|
},
|
||||||
|
"type": "extrudePlane"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"__meta": [
|
||||||
|
{
|
||||||
|
"sourceRange": [
|
||||||
|
136,
|
||||||
|
143,
|
||||||
|
0
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"__meta": [
|
||||||
|
{
|
||||||
|
"sourceRange": [
|
||||||
|
35,
|
||||||
|
60,
|
||||||
|
0
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"height": 10.0,
|
||||||
|
"startCapId": "[uuid]",
|
||||||
|
"endCapId": "[uuid]",
|
||||||
|
"edgeCuts": [
|
||||||
|
{
|
||||||
|
"type": "fillet",
|
||||||
|
"id": "[uuid]",
|
||||||
|
"radius": 2.0,
|
||||||
|
"edgeId": "[uuid]",
|
||||||
|
"tag": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "fillet",
|
||||||
|
"id": "[uuid]",
|
||||||
|
"radius": 2.0,
|
||||||
|
"edgeId": "[uuid]",
|
||||||
|
"tag": null
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"__meta": [
|
||||||
|
{
|
||||||
|
"sourceRange": [
|
||||||
|
35,
|
||||||
|
60,
|
||||||
|
0
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"thing": {
|
||||||
|
"type": "TagIdentifier",
|
||||||
|
"type": "TagIdentifier",
|
||||||
|
"value": "thing",
|
||||||
|
"info": {
|
||||||
|
"type": "TagEngineInfo",
|
||||||
|
"id": "[uuid]",
|
||||||
|
"sketch": "[uuid]",
|
||||||
|
"path": {
|
||||||
|
"__geoMeta": {
|
||||||
|
"id": "[uuid]",
|
||||||
|
"sourceRange": [
|
||||||
|
66,
|
||||||
|
90,
|
||||||
|
0
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"from": [
|
||||||
|
0.0,
|
||||||
|
0.0
|
||||||
|
],
|
||||||
|
"tag": {
|
||||||
|
"end": 89,
|
||||||
|
"start": 83,
|
||||||
|
"type": "TagDeclarator",
|
||||||
|
"value": "thing"
|
||||||
|
},
|
||||||
|
"to": [
|
||||||
|
0.0,
|
||||||
|
10.0
|
||||||
|
],
|
||||||
|
"type": "ToPoint"
|
||||||
|
},
|
||||||
|
"surface": {
|
||||||
|
"faceId": "[uuid]",
|
||||||
|
"id": "[uuid]",
|
||||||
|
"sourceRange": [
|
||||||
|
66,
|
||||||
|
90,
|
||||||
|
0
|
||||||
|
],
|
||||||
|
"tag": {
|
||||||
|
"end": 89,
|
||||||
|
"start": 83,
|
||||||
|
"type": "TagDeclarator",
|
||||||
|
"value": "thing"
|
||||||
|
},
|
||||||
|
"type": "extrudePlane"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"__meta": [
|
||||||
|
{
|
||||||
|
"sourceRange": [
|
||||||
|
83,
|
||||||
|
89,
|
||||||
|
0
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"thing2": {
|
||||||
|
"type": "TagIdentifier",
|
||||||
|
"type": "TagIdentifier",
|
||||||
|
"value": "thing2",
|
||||||
|
"info": {
|
||||||
|
"type": "TagEngineInfo",
|
||||||
|
"id": "[uuid]",
|
||||||
|
"sketch": "[uuid]",
|
||||||
|
"path": {
|
||||||
|
"__geoMeta": {
|
||||||
|
"id": "[uuid]",
|
||||||
|
"sourceRange": [
|
||||||
|
118,
|
||||||
|
144,
|
||||||
|
0
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"from": [
|
||||||
|
10.0,
|
||||||
|
10.0
|
||||||
|
],
|
||||||
|
"tag": {
|
||||||
|
"end": 143,
|
||||||
|
"start": 136,
|
||||||
|
"type": "TagDeclarator",
|
||||||
|
"value": "thing2"
|
||||||
|
},
|
||||||
|
"to": [
|
||||||
|
10.0,
|
||||||
|
0.0
|
||||||
|
],
|
||||||
|
"type": "ToPoint"
|
||||||
|
},
|
||||||
|
"surface": {
|
||||||
|
"faceId": "[uuid]",
|
||||||
|
"id": "[uuid]",
|
||||||
|
"sourceRange": [
|
||||||
|
118,
|
||||||
|
144,
|
||||||
|
0
|
||||||
|
],
|
||||||
|
"tag": {
|
||||||
|
"end": 143,
|
||||||
|
"start": 136,
|
||||||
|
"type": "TagDeclarator",
|
||||||
|
"value": "thing2"
|
||||||
|
},
|
||||||
|
"type": "extrudePlane"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"__meta": [
|
||||||
|
{
|
||||||
|
"sourceRange": [
|
||||||
|
136,
|
||||||
|
143,
|
||||||
|
0
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"parent": null
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"currentEnv": 0,
|
||||||
|
"return": null
|
||||||
|
}
|
||||||
|
After Width: | Height: | Size: 89 KiB |
747
src/wasm-lib/kcl/tests/basic_fillet_cube_start/tokens.snap
Normal file
@ -0,0 +1,747 @@
|
|||||||
|
---
|
||||||
|
source: kcl/src/simulation_tests.rs
|
||||||
|
description: Result of tokenizing basic_fillet_cube_start.kcl
|
||||||
|
snapshot_kind: text
|
||||||
|
---
|
||||||
|
{
|
||||||
|
"Ok": [
|
||||||
|
{
|
||||||
|
"type": "word",
|
||||||
|
"start": 0,
|
||||||
|
"end": 7,
|
||||||
|
"value": "part001"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "whitespace",
|
||||||
|
"start": 7,
|
||||||
|
"end": 8,
|
||||||
|
"value": " "
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "operator",
|
||||||
|
"start": 8,
|
||||||
|
"end": 9,
|
||||||
|
"value": "="
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "whitespace",
|
||||||
|
"start": 9,
|
||||||
|
"end": 10,
|
||||||
|
"value": " "
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "word",
|
||||||
|
"start": 10,
|
||||||
|
"end": 23,
|
||||||
|
"value": "startSketchOn"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "brace",
|
||||||
|
"start": 23,
|
||||||
|
"end": 24,
|
||||||
|
"value": "("
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "string",
|
||||||
|
"start": 24,
|
||||||
|
"end": 28,
|
||||||
|
"value": "'XY'"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "brace",
|
||||||
|
"start": 28,
|
||||||
|
"end": 29,
|
||||||
|
"value": ")"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "whitespace",
|
||||||
|
"start": 29,
|
||||||
|
"end": 32,
|
||||||
|
"value": "\n "
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "operator",
|
||||||
|
"start": 32,
|
||||||
|
"end": 34,
|
||||||
|
"value": "|>"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "whitespace",
|
||||||
|
"start": 34,
|
||||||
|
"end": 35,
|
||||||
|
"value": " "
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "word",
|
||||||
|
"start": 35,
|
||||||
|
"end": 49,
|
||||||
|
"value": "startProfileAt"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "brace",
|
||||||
|
"start": 49,
|
||||||
|
"end": 50,
|
||||||
|
"value": "("
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "brace",
|
||||||
|
"start": 50,
|
||||||
|
"end": 51,
|
||||||
|
"value": "["
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "number",
|
||||||
|
"start": 51,
|
||||||
|
"end": 52,
|
||||||
|
"value": "0"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "comma",
|
||||||
|
"start": 52,
|
||||||
|
"end": 53,
|
||||||
|
"value": ","
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "whitespace",
|
||||||
|
"start": 53,
|
||||||
|
"end": 54,
|
||||||
|
"value": " "
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "number",
|
||||||
|
"start": 54,
|
||||||
|
"end": 55,
|
||||||
|
"value": "0"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "brace",
|
||||||
|
"start": 55,
|
||||||
|
"end": 56,
|
||||||
|
"value": "]"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "comma",
|
||||||
|
"start": 56,
|
||||||
|
"end": 57,
|
||||||
|
"value": ","
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "whitespace",
|
||||||
|
"start": 57,
|
||||||
|
"end": 58,
|
||||||
|
"value": " "
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "operator",
|
||||||
|
"start": 58,
|
||||||
|
"end": 59,
|
||||||
|
"value": "%"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "brace",
|
||||||
|
"start": 59,
|
||||||
|
"end": 60,
|
||||||
|
"value": ")"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "whitespace",
|
||||||
|
"start": 60,
|
||||||
|
"end": 63,
|
||||||
|
"value": "\n "
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "operator",
|
||||||
|
"start": 63,
|
||||||
|
"end": 65,
|
||||||
|
"value": "|>"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "whitespace",
|
||||||
|
"start": 65,
|
||||||
|
"end": 66,
|
||||||
|
"value": " "
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "word",
|
||||||
|
"start": 66,
|
||||||
|
"end": 70,
|
||||||
|
"value": "line"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "brace",
|
||||||
|
"start": 70,
|
||||||
|
"end": 71,
|
||||||
|
"value": "("
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "brace",
|
||||||
|
"start": 71,
|
||||||
|
"end": 72,
|
||||||
|
"value": "["
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "number",
|
||||||
|
"start": 72,
|
||||||
|
"end": 73,
|
||||||
|
"value": "0"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "comma",
|
||||||
|
"start": 73,
|
||||||
|
"end": 74,
|
||||||
|
"value": ","
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "whitespace",
|
||||||
|
"start": 74,
|
||||||
|
"end": 75,
|
||||||
|
"value": " "
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "number",
|
||||||
|
"start": 75,
|
||||||
|
"end": 77,
|
||||||
|
"value": "10"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "brace",
|
||||||
|
"start": 77,
|
||||||
|
"end": 78,
|
||||||
|
"value": "]"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "comma",
|
||||||
|
"start": 78,
|
||||||
|
"end": 79,
|
||||||
|
"value": ","
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "whitespace",
|
||||||
|
"start": 79,
|
||||||
|
"end": 80,
|
||||||
|
"value": " "
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "operator",
|
||||||
|
"start": 80,
|
||||||
|
"end": 81,
|
||||||
|
"value": "%"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "comma",
|
||||||
|
"start": 81,
|
||||||
|
"end": 82,
|
||||||
|
"value": ","
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "whitespace",
|
||||||
|
"start": 82,
|
||||||
|
"end": 83,
|
||||||
|
"value": " "
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "dollar",
|
||||||
|
"start": 83,
|
||||||
|
"end": 84,
|
||||||
|
"value": "$"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "word",
|
||||||
|
"start": 84,
|
||||||
|
"end": 89,
|
||||||
|
"value": "thing"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "brace",
|
||||||
|
"start": 89,
|
||||||
|
"end": 90,
|
||||||
|
"value": ")"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "whitespace",
|
||||||
|
"start": 90,
|
||||||
|
"end": 93,
|
||||||
|
"value": "\n "
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "operator",
|
||||||
|
"start": 93,
|
||||||
|
"end": 95,
|
||||||
|
"value": "|>"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "whitespace",
|
||||||
|
"start": 95,
|
||||||
|
"end": 96,
|
||||||
|
"value": " "
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "word",
|
||||||
|
"start": 96,
|
||||||
|
"end": 100,
|
||||||
|
"value": "line"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "brace",
|
||||||
|
"start": 100,
|
||||||
|
"end": 101,
|
||||||
|
"value": "("
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "brace",
|
||||||
|
"start": 101,
|
||||||
|
"end": 102,
|
||||||
|
"value": "["
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "number",
|
||||||
|
"start": 102,
|
||||||
|
"end": 104,
|
||||||
|
"value": "10"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "comma",
|
||||||
|
"start": 104,
|
||||||
|
"end": 105,
|
||||||
|
"value": ","
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "whitespace",
|
||||||
|
"start": 105,
|
||||||
|
"end": 106,
|
||||||
|
"value": " "
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "number",
|
||||||
|
"start": 106,
|
||||||
|
"end": 107,
|
||||||
|
"value": "0"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "brace",
|
||||||
|
"start": 107,
|
||||||
|
"end": 108,
|
||||||
|
"value": "]"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "comma",
|
||||||
|
"start": 108,
|
||||||
|
"end": 109,
|
||||||
|
"value": ","
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "whitespace",
|
||||||
|
"start": 109,
|
||||||
|
"end": 110,
|
||||||
|
"value": " "
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "operator",
|
||||||
|
"start": 110,
|
||||||
|
"end": 111,
|
||||||
|
"value": "%"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "brace",
|
||||||
|
"start": 111,
|
||||||
|
"end": 112,
|
||||||
|
"value": ")"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "whitespace",
|
||||||
|
"start": 112,
|
||||||
|
"end": 115,
|
||||||
|
"value": "\n "
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "operator",
|
||||||
|
"start": 115,
|
||||||
|
"end": 117,
|
||||||
|
"value": "|>"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "whitespace",
|
||||||
|
"start": 117,
|
||||||
|
"end": 118,
|
||||||
|
"value": " "
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "word",
|
||||||
|
"start": 118,
|
||||||
|
"end": 122,
|
||||||
|
"value": "line"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "brace",
|
||||||
|
"start": 122,
|
||||||
|
"end": 123,
|
||||||
|
"value": "("
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "brace",
|
||||||
|
"start": 123,
|
||||||
|
"end": 124,
|
||||||
|
"value": "["
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "number",
|
||||||
|
"start": 124,
|
||||||
|
"end": 125,
|
||||||
|
"value": "0"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "comma",
|
||||||
|
"start": 125,
|
||||||
|
"end": 126,
|
||||||
|
"value": ","
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "whitespace",
|
||||||
|
"start": 126,
|
||||||
|
"end": 127,
|
||||||
|
"value": " "
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "operator",
|
||||||
|
"start": 127,
|
||||||
|
"end": 128,
|
||||||
|
"value": "-"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "number",
|
||||||
|
"start": 128,
|
||||||
|
"end": 130,
|
||||||
|
"value": "10"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "brace",
|
||||||
|
"start": 130,
|
||||||
|
"end": 131,
|
||||||
|
"value": "]"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "comma",
|
||||||
|
"start": 131,
|
||||||
|
"end": 132,
|
||||||
|
"value": ","
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "whitespace",
|
||||||
|
"start": 132,
|
||||||
|
"end": 133,
|
||||||
|
"value": " "
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "operator",
|
||||||
|
"start": 133,
|
||||||
|
"end": 134,
|
||||||
|
"value": "%"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "comma",
|
||||||
|
"start": 134,
|
||||||
|
"end": 135,
|
||||||
|
"value": ","
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "whitespace",
|
||||||
|
"start": 135,
|
||||||
|
"end": 136,
|
||||||
|
"value": " "
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "dollar",
|
||||||
|
"start": 136,
|
||||||
|
"end": 137,
|
||||||
|
"value": "$"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "word",
|
||||||
|
"start": 137,
|
||||||
|
"end": 143,
|
||||||
|
"value": "thing2"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "brace",
|
||||||
|
"start": 143,
|
||||||
|
"end": 144,
|
||||||
|
"value": ")"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "whitespace",
|
||||||
|
"start": 144,
|
||||||
|
"end": 147,
|
||||||
|
"value": "\n "
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "operator",
|
||||||
|
"start": 147,
|
||||||
|
"end": 149,
|
||||||
|
"value": "|>"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "whitespace",
|
||||||
|
"start": 149,
|
||||||
|
"end": 150,
|
||||||
|
"value": " "
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "word",
|
||||||
|
"start": 150,
|
||||||
|
"end": 155,
|
||||||
|
"value": "close"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "brace",
|
||||||
|
"start": 155,
|
||||||
|
"end": 156,
|
||||||
|
"value": "("
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "operator",
|
||||||
|
"start": 156,
|
||||||
|
"end": 157,
|
||||||
|
"value": "%"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "brace",
|
||||||
|
"start": 157,
|
||||||
|
"end": 158,
|
||||||
|
"value": ")"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "whitespace",
|
||||||
|
"start": 158,
|
||||||
|
"end": 161,
|
||||||
|
"value": "\n "
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "operator",
|
||||||
|
"start": 161,
|
||||||
|
"end": 163,
|
||||||
|
"value": "|>"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "whitespace",
|
||||||
|
"start": 163,
|
||||||
|
"end": 164,
|
||||||
|
"value": " "
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "word",
|
||||||
|
"start": 164,
|
||||||
|
"end": 171,
|
||||||
|
"value": "extrude"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "brace",
|
||||||
|
"start": 171,
|
||||||
|
"end": 172,
|
||||||
|
"value": "("
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "number",
|
||||||
|
"start": 172,
|
||||||
|
"end": 174,
|
||||||
|
"value": "10"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "comma",
|
||||||
|
"start": 174,
|
||||||
|
"end": 175,
|
||||||
|
"value": ","
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "whitespace",
|
||||||
|
"start": 175,
|
||||||
|
"end": 176,
|
||||||
|
"value": " "
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "operator",
|
||||||
|
"start": 176,
|
||||||
|
"end": 177,
|
||||||
|
"value": "%"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "brace",
|
||||||
|
"start": 177,
|
||||||
|
"end": 178,
|
||||||
|
"value": ")"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "whitespace",
|
||||||
|
"start": 178,
|
||||||
|
"end": 181,
|
||||||
|
"value": "\n "
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "operator",
|
||||||
|
"start": 181,
|
||||||
|
"end": 183,
|
||||||
|
"value": "|>"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "whitespace",
|
||||||
|
"start": 183,
|
||||||
|
"end": 184,
|
||||||
|
"value": " "
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "word",
|
||||||
|
"start": 184,
|
||||||
|
"end": 190,
|
||||||
|
"value": "fillet"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "brace",
|
||||||
|
"start": 190,
|
||||||
|
"end": 191,
|
||||||
|
"value": "("
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "brace",
|
||||||
|
"start": 191,
|
||||||
|
"end": 192,
|
||||||
|
"value": "{"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "whitespace",
|
||||||
|
"start": 192,
|
||||||
|
"end": 193,
|
||||||
|
"value": " "
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "word",
|
||||||
|
"start": 193,
|
||||||
|
"end": 199,
|
||||||
|
"value": "radius"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "colon",
|
||||||
|
"start": 199,
|
||||||
|
"end": 200,
|
||||||
|
"value": ":"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "whitespace",
|
||||||
|
"start": 200,
|
||||||
|
"end": 201,
|
||||||
|
"value": " "
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "number",
|
||||||
|
"start": 201,
|
||||||
|
"end": 202,
|
||||||
|
"value": "2"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "comma",
|
||||||
|
"start": 202,
|
||||||
|
"end": 203,
|
||||||
|
"value": ","
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "whitespace",
|
||||||
|
"start": 203,
|
||||||
|
"end": 204,
|
||||||
|
"value": " "
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "word",
|
||||||
|
"start": 204,
|
||||||
|
"end": 208,
|
||||||
|
"value": "tags"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "colon",
|
||||||
|
"start": 208,
|
||||||
|
"end": 209,
|
||||||
|
"value": ":"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "whitespace",
|
||||||
|
"start": 209,
|
||||||
|
"end": 210,
|
||||||
|
"value": " "
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "brace",
|
||||||
|
"start": 210,
|
||||||
|
"end": 211,
|
||||||
|
"value": "["
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "word",
|
||||||
|
"start": 211,
|
||||||
|
"end": 216,
|
||||||
|
"value": "thing"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "comma",
|
||||||
|
"start": 216,
|
||||||
|
"end": 217,
|
||||||
|
"value": ","
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "whitespace",
|
||||||
|
"start": 217,
|
||||||
|
"end": 218,
|
||||||
|
"value": " "
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "word",
|
||||||
|
"start": 218,
|
||||||
|
"end": 224,
|
||||||
|
"value": "thing2"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "brace",
|
||||||
|
"start": 224,
|
||||||
|
"end": 225,
|
||||||
|
"value": "]"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "whitespace",
|
||||||
|
"start": 225,
|
||||||
|
"end": 226,
|
||||||
|
"value": " "
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "brace",
|
||||||
|
"start": 226,
|
||||||
|
"end": 227,
|
||||||
|
"value": "}"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "comma",
|
||||||
|
"start": 227,
|
||||||
|
"end": 228,
|
||||||
|
"value": ","
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "whitespace",
|
||||||
|
"start": 228,
|
||||||
|
"end": 229,
|
||||||
|
"value": " "
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "operator",
|
||||||
|
"start": 229,
|
||||||
|
"end": 230,
|
||||||
|
"value": "%"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "brace",
|
||||||
|
"start": 230,
|
||||||
|
"end": 231,
|
||||||
|
"value": ")"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "whitespace",
|
||||||
|
"start": 231,
|
||||||
|
"end": 232,
|
||||||
|
"value": "\n"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
@ -0,0 +1,291 @@
|
|||||||
|
---
|
||||||
|
source: kcl/src/simulation_tests.rs
|
||||||
|
description: Result of parsing big_number_angle_to_match_length_x.kcl
|
||||||
|
snapshot_kind: text
|
||||||
|
---
|
||||||
|
{
|
||||||
|
"Ok": {
|
||||||
|
"body": [
|
||||||
|
{
|
||||||
|
"declarations": [
|
||||||
|
{
|
||||||
|
"end": 188,
|
||||||
|
"id": {
|
||||||
|
"end": 7,
|
||||||
|
"name": "part001",
|
||||||
|
"start": 0,
|
||||||
|
"type": "Identifier"
|
||||||
|
},
|
||||||
|
"init": {
|
||||||
|
"body": [
|
||||||
|
{
|
||||||
|
"arguments": [
|
||||||
|
{
|
||||||
|
"end": 28,
|
||||||
|
"raw": "'XY'",
|
||||||
|
"start": 24,
|
||||||
|
"type": "Literal",
|
||||||
|
"type": "Literal",
|
||||||
|
"value": "XY"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"callee": {
|
||||||
|
"end": 23,
|
||||||
|
"name": "startSketchOn",
|
||||||
|
"start": 10,
|
||||||
|
"type": "Identifier"
|
||||||
|
},
|
||||||
|
"end": 29,
|
||||||
|
"optional": false,
|
||||||
|
"start": 10,
|
||||||
|
"type": "CallExpression",
|
||||||
|
"type": "CallExpression"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"arguments": [
|
||||||
|
{
|
||||||
|
"elements": [
|
||||||
|
{
|
||||||
|
"end": 52,
|
||||||
|
"raw": "0",
|
||||||
|
"start": 51,
|
||||||
|
"type": "Literal",
|
||||||
|
"type": "Literal",
|
||||||
|
"value": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"end": 55,
|
||||||
|
"raw": "0",
|
||||||
|
"start": 54,
|
||||||
|
"type": "Literal",
|
||||||
|
"type": "Literal",
|
||||||
|
"value": 0
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"end": 56,
|
||||||
|
"start": 50,
|
||||||
|
"type": "ArrayExpression",
|
||||||
|
"type": "ArrayExpression"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"end": 59,
|
||||||
|
"start": 58,
|
||||||
|
"type": "PipeSubstitution",
|
||||||
|
"type": "PipeSubstitution"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"callee": {
|
||||||
|
"end": 49,
|
||||||
|
"name": "startProfileAt",
|
||||||
|
"start": 35,
|
||||||
|
"type": "Identifier"
|
||||||
|
},
|
||||||
|
"end": 60,
|
||||||
|
"optional": false,
|
||||||
|
"start": 35,
|
||||||
|
"type": "CallExpression",
|
||||||
|
"type": "CallExpression"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"arguments": [
|
||||||
|
{
|
||||||
|
"elements": [
|
||||||
|
{
|
||||||
|
"end": 73,
|
||||||
|
"raw": "1",
|
||||||
|
"start": 72,
|
||||||
|
"type": "Literal",
|
||||||
|
"type": "Literal",
|
||||||
|
"value": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"end": 79,
|
||||||
|
"raw": "3.82",
|
||||||
|
"start": 75,
|
||||||
|
"type": "Literal",
|
||||||
|
"type": "Literal",
|
||||||
|
"value": 3.82
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"end": 80,
|
||||||
|
"start": 71,
|
||||||
|
"type": "ArrayExpression",
|
||||||
|
"type": "ArrayExpression"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"end": 83,
|
||||||
|
"start": 82,
|
||||||
|
"type": "PipeSubstitution",
|
||||||
|
"type": "PipeSubstitution"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"end": 91,
|
||||||
|
"start": 85,
|
||||||
|
"type": "TagDeclarator",
|
||||||
|
"type": "TagDeclarator",
|
||||||
|
"value": "seg01"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"callee": {
|
||||||
|
"end": 70,
|
||||||
|
"name": "line",
|
||||||
|
"start": 66,
|
||||||
|
"type": "Identifier"
|
||||||
|
},
|
||||||
|
"end": 92,
|
||||||
|
"optional": false,
|
||||||
|
"start": 66,
|
||||||
|
"type": "CallExpression",
|
||||||
|
"type": "CallExpression"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"arguments": [
|
||||||
|
{
|
||||||
|
"elements": [
|
||||||
|
{
|
||||||
|
"argument": {
|
||||||
|
"arguments": [
|
||||||
|
{
|
||||||
|
"end": 139,
|
||||||
|
"name": "seg01",
|
||||||
|
"start": 134,
|
||||||
|
"type": "Identifier",
|
||||||
|
"type": "Identifier"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"end": 142,
|
||||||
|
"raw": "3",
|
||||||
|
"start": 141,
|
||||||
|
"type": "Literal",
|
||||||
|
"type": "Literal",
|
||||||
|
"value": 3
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"end": 145,
|
||||||
|
"start": 144,
|
||||||
|
"type": "PipeSubstitution",
|
||||||
|
"type": "PipeSubstitution"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"callee": {
|
||||||
|
"end": 133,
|
||||||
|
"name": "angleToMatchLengthX",
|
||||||
|
"start": 114,
|
||||||
|
"type": "Identifier"
|
||||||
|
},
|
||||||
|
"end": 146,
|
||||||
|
"optional": false,
|
||||||
|
"start": 114,
|
||||||
|
"type": "CallExpression",
|
||||||
|
"type": "CallExpression"
|
||||||
|
},
|
||||||
|
"end": 146,
|
||||||
|
"operator": "-",
|
||||||
|
"start": 113,
|
||||||
|
"type": "UnaryExpression",
|
||||||
|
"type": "UnaryExpression"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"end": 149,
|
||||||
|
"raw": "3",
|
||||||
|
"start": 148,
|
||||||
|
"type": "Literal",
|
||||||
|
"type": "Literal",
|
||||||
|
"value": 3
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"end": 150,
|
||||||
|
"start": 112,
|
||||||
|
"type": "ArrayExpression",
|
||||||
|
"type": "ArrayExpression"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"end": 153,
|
||||||
|
"start": 152,
|
||||||
|
"type": "PipeSubstitution",
|
||||||
|
"type": "PipeSubstitution"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"callee": {
|
||||||
|
"end": 111,
|
||||||
|
"name": "angledLineToX",
|
||||||
|
"start": 98,
|
||||||
|
"type": "Identifier"
|
||||||
|
},
|
||||||
|
"end": 154,
|
||||||
|
"optional": false,
|
||||||
|
"start": 98,
|
||||||
|
"type": "CallExpression",
|
||||||
|
"type": "CallExpression"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"arguments": [
|
||||||
|
{
|
||||||
|
"end": 167,
|
||||||
|
"start": 166,
|
||||||
|
"type": "PipeSubstitution",
|
||||||
|
"type": "PipeSubstitution"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"callee": {
|
||||||
|
"end": 165,
|
||||||
|
"name": "close",
|
||||||
|
"start": 160,
|
||||||
|
"type": "Identifier"
|
||||||
|
},
|
||||||
|
"end": 168,
|
||||||
|
"optional": false,
|
||||||
|
"start": 160,
|
||||||
|
"type": "CallExpression",
|
||||||
|
"type": "CallExpression"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"arguments": [
|
||||||
|
{
|
||||||
|
"end": 184,
|
||||||
|
"raw": "10",
|
||||||
|
"start": 182,
|
||||||
|
"type": "Literal",
|
||||||
|
"type": "Literal",
|
||||||
|
"value": 10
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"end": 187,
|
||||||
|
"start": 186,
|
||||||
|
"type": "PipeSubstitution",
|
||||||
|
"type": "PipeSubstitution"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"callee": {
|
||||||
|
"end": 181,
|
||||||
|
"name": "extrude",
|
||||||
|
"start": 174,
|
||||||
|
"type": "Identifier"
|
||||||
|
},
|
||||||
|
"end": 188,
|
||||||
|
"optional": false,
|
||||||
|
"start": 174,
|
||||||
|
"type": "CallExpression",
|
||||||
|
"type": "CallExpression"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"end": 188,
|
||||||
|
"start": 10,
|
||||||
|
"type": "PipeExpression",
|
||||||
|
"type": "PipeExpression"
|
||||||
|
},
|
||||||
|
"start": 0,
|
||||||
|
"type": "VariableDeclarator"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"end": 188,
|
||||||
|
"kind": "const",
|
||||||
|
"start": 0,
|
||||||
|
"type": "VariableDeclaration",
|
||||||
|
"type": "VariableDeclaration"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"end": 189,
|
||||||
|
"start": 0
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -0,0 +1,6 @@
|
|||||||
|
part001 = startSketchOn('XY')
|
||||||
|
|> startProfileAt([0, 0], %)
|
||||||
|
|> line([1, 3.82], %, $seg01)
|
||||||
|
|> angledLineToX([-angleToMatchLengthX(seg01, 3, %), 3], %)
|
||||||
|
|> close(%)
|
||||||
|
|> extrude(10, %)
|
||||||
@ -0,0 +1,339 @@
|
|||||||
|
---
|
||||||
|
source: kcl/src/simulation_tests.rs
|
||||||
|
description: Program memory after executing big_number_angle_to_match_length_x.kcl
|
||||||
|
snapshot_kind: text
|
||||||
|
---
|
||||||
|
{
|
||||||
|
"environments": [
|
||||||
|
{
|
||||||
|
"bindings": {
|
||||||
|
"HALF_TURN": {
|
||||||
|
"type": "Number",
|
||||||
|
"value": 180.0,
|
||||||
|
"__meta": []
|
||||||
|
},
|
||||||
|
"QUARTER_TURN": {
|
||||||
|
"type": "Number",
|
||||||
|
"value": 90.0,
|
||||||
|
"__meta": []
|
||||||
|
},
|
||||||
|
"THREE_QUARTER_TURN": {
|
||||||
|
"type": "Number",
|
||||||
|
"value": 270.0,
|
||||||
|
"__meta": []
|
||||||
|
},
|
||||||
|
"ZERO": {
|
||||||
|
"type": "Number",
|
||||||
|
"value": 0.0,
|
||||||
|
"__meta": []
|
||||||
|
},
|
||||||
|
"part001": {
|
||||||
|
"type": "Solid",
|
||||||
|
"type": "Solid",
|
||||||
|
"id": "[uuid]",
|
||||||
|
"value": [
|
||||||
|
{
|
||||||
|
"faceId": "[uuid]",
|
||||||
|
"id": "[uuid]",
|
||||||
|
"sourceRange": [
|
||||||
|
66,
|
||||||
|
92,
|
||||||
|
0
|
||||||
|
],
|
||||||
|
"tag": {
|
||||||
|
"end": 91,
|
||||||
|
"start": 85,
|
||||||
|
"type": "TagDeclarator",
|
||||||
|
"value": "seg01"
|
||||||
|
},
|
||||||
|
"type": "extrudePlane"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"faceId": "[uuid]",
|
||||||
|
"id": "[uuid]",
|
||||||
|
"sourceRange": [
|
||||||
|
98,
|
||||||
|
154,
|
||||||
|
0
|
||||||
|
],
|
||||||
|
"tag": null,
|
||||||
|
"type": "extrudePlane"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"faceId": "[uuid]",
|
||||||
|
"id": "[uuid]",
|
||||||
|
"sourceRange": [
|
||||||
|
160,
|
||||||
|
168,
|
||||||
|
0
|
||||||
|
],
|
||||||
|
"tag": null,
|
||||||
|
"type": "extrudePlane"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"sketch": {
|
||||||
|
"type": "Sketch",
|
||||||
|
"id": "[uuid]",
|
||||||
|
"paths": [
|
||||||
|
{
|
||||||
|
"__geoMeta": {
|
||||||
|
"id": "[uuid]",
|
||||||
|
"sourceRange": [
|
||||||
|
66,
|
||||||
|
92,
|
||||||
|
0
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"from": [
|
||||||
|
0.0,
|
||||||
|
0.0
|
||||||
|
],
|
||||||
|
"tag": {
|
||||||
|
"end": 91,
|
||||||
|
"start": 85,
|
||||||
|
"type": "TagDeclarator",
|
||||||
|
"value": "seg01"
|
||||||
|
},
|
||||||
|
"to": [
|
||||||
|
1.0,
|
||||||
|
3.82
|
||||||
|
],
|
||||||
|
"type": "ToPoint"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"__geoMeta": {
|
||||||
|
"id": "[uuid]",
|
||||||
|
"sourceRange": [
|
||||||
|
98,
|
||||||
|
154,
|
||||||
|
0
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"from": [
|
||||||
|
1.0,
|
||||||
|
3.82
|
||||||
|
],
|
||||||
|
"tag": null,
|
||||||
|
"to": [
|
||||||
|
3.0,
|
||||||
|
0.4152
|
||||||
|
],
|
||||||
|
"type": "ToPoint"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"__geoMeta": {
|
||||||
|
"id": "[uuid]",
|
||||||
|
"sourceRange": [
|
||||||
|
160,
|
||||||
|
168,
|
||||||
|
0
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"from": [
|
||||||
|
3.0,
|
||||||
|
0.4152
|
||||||
|
],
|
||||||
|
"tag": null,
|
||||||
|
"to": [
|
||||||
|
0.0,
|
||||||
|
0.0
|
||||||
|
],
|
||||||
|
"type": "ToPoint"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"on": {
|
||||||
|
"type": "plane",
|
||||||
|
"id": "[uuid]",
|
||||||
|
"value": "XY",
|
||||||
|
"origin": {
|
||||||
|
"x": 0.0,
|
||||||
|
"y": 0.0,
|
||||||
|
"z": 0.0
|
||||||
|
},
|
||||||
|
"xAxis": {
|
||||||
|
"x": 1.0,
|
||||||
|
"y": 0.0,
|
||||||
|
"z": 0.0
|
||||||
|
},
|
||||||
|
"yAxis": {
|
||||||
|
"x": 0.0,
|
||||||
|
"y": 1.0,
|
||||||
|
"z": 0.0
|
||||||
|
},
|
||||||
|
"zAxis": {
|
||||||
|
"x": 0.0,
|
||||||
|
"y": 0.0,
|
||||||
|
"z": 1.0
|
||||||
|
},
|
||||||
|
"__meta": []
|
||||||
|
},
|
||||||
|
"start": {
|
||||||
|
"from": [
|
||||||
|
0.0,
|
||||||
|
0.0
|
||||||
|
],
|
||||||
|
"to": [
|
||||||
|
0.0,
|
||||||
|
0.0
|
||||||
|
],
|
||||||
|
"tag": null,
|
||||||
|
"__geoMeta": {
|
||||||
|
"id": "[uuid]",
|
||||||
|
"sourceRange": [
|
||||||
|
35,
|
||||||
|
60,
|
||||||
|
0
|
||||||
|
]
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"tags": {
|
||||||
|
"seg01": {
|
||||||
|
"type": "TagIdentifier",
|
||||||
|
"value": "seg01",
|
||||||
|
"info": {
|
||||||
|
"type": "TagEngineInfo",
|
||||||
|
"id": "[uuid]",
|
||||||
|
"sketch": "[uuid]",
|
||||||
|
"path": {
|
||||||
|
"__geoMeta": {
|
||||||
|
"id": "[uuid]",
|
||||||
|
"sourceRange": [
|
||||||
|
66,
|
||||||
|
92,
|
||||||
|
0
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"from": [
|
||||||
|
0.0,
|
||||||
|
0.0
|
||||||
|
],
|
||||||
|
"tag": {
|
||||||
|
"end": 91,
|
||||||
|
"start": 85,
|
||||||
|
"type": "TagDeclarator",
|
||||||
|
"value": "seg01"
|
||||||
|
},
|
||||||
|
"to": [
|
||||||
|
1.0,
|
||||||
|
3.82
|
||||||
|
],
|
||||||
|
"type": "ToPoint"
|
||||||
|
},
|
||||||
|
"surface": {
|
||||||
|
"faceId": "[uuid]",
|
||||||
|
"id": "[uuid]",
|
||||||
|
"sourceRange": [
|
||||||
|
66,
|
||||||
|
92,
|
||||||
|
0
|
||||||
|
],
|
||||||
|
"tag": {
|
||||||
|
"end": 91,
|
||||||
|
"start": 85,
|
||||||
|
"type": "TagDeclarator",
|
||||||
|
"value": "seg01"
|
||||||
|
},
|
||||||
|
"type": "extrudePlane"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"__meta": [
|
||||||
|
{
|
||||||
|
"sourceRange": [
|
||||||
|
85,
|
||||||
|
91,
|
||||||
|
0
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"__meta": [
|
||||||
|
{
|
||||||
|
"sourceRange": [
|
||||||
|
35,
|
||||||
|
60,
|
||||||
|
0
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"height": 10.0,
|
||||||
|
"startCapId": "[uuid]",
|
||||||
|
"endCapId": "[uuid]",
|
||||||
|
"__meta": [
|
||||||
|
{
|
||||||
|
"sourceRange": [
|
||||||
|
35,
|
||||||
|
60,
|
||||||
|
0
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"seg01": {
|
||||||
|
"type": "TagIdentifier",
|
||||||
|
"type": "TagIdentifier",
|
||||||
|
"value": "seg01",
|
||||||
|
"info": {
|
||||||
|
"type": "TagEngineInfo",
|
||||||
|
"id": "[uuid]",
|
||||||
|
"sketch": "[uuid]",
|
||||||
|
"path": {
|
||||||
|
"__geoMeta": {
|
||||||
|
"id": "[uuid]",
|
||||||
|
"sourceRange": [
|
||||||
|
66,
|
||||||
|
92,
|
||||||
|
0
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"from": [
|
||||||
|
0.0,
|
||||||
|
0.0
|
||||||
|
],
|
||||||
|
"tag": {
|
||||||
|
"end": 91,
|
||||||
|
"start": 85,
|
||||||
|
"type": "TagDeclarator",
|
||||||
|
"value": "seg01"
|
||||||
|
},
|
||||||
|
"to": [
|
||||||
|
1.0,
|
||||||
|
3.82
|
||||||
|
],
|
||||||
|
"type": "ToPoint"
|
||||||
|
},
|
||||||
|
"surface": {
|
||||||
|
"faceId": "[uuid]",
|
||||||
|
"id": "[uuid]",
|
||||||
|
"sourceRange": [
|
||||||
|
66,
|
||||||
|
92,
|
||||||
|
0
|
||||||
|
],
|
||||||
|
"tag": {
|
||||||
|
"end": 91,
|
||||||
|
"start": 85,
|
||||||
|
"type": "TagDeclarator",
|
||||||
|
"value": "seg01"
|
||||||
|
},
|
||||||
|
"type": "extrudePlane"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"__meta": [
|
||||||
|
{
|
||||||
|
"sourceRange": [
|
||||||
|
85,
|
||||||
|
91,
|
||||||
|
0
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"parent": null
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"currentEnv": 0,
|
||||||
|
"return": null
|
||||||
|
}
|
||||||
|
After Width: | Height: | Size: 51 KiB |
@ -0,0 +1,519 @@
|
|||||||
|
---
|
||||||
|
source: kcl/src/simulation_tests.rs
|
||||||
|
description: Result of tokenizing big_number_angle_to_match_length_x.kcl
|
||||||
|
snapshot_kind: text
|
||||||
|
---
|
||||||
|
{
|
||||||
|
"Ok": [
|
||||||
|
{
|
||||||
|
"type": "word",
|
||||||
|
"start": 0,
|
||||||
|
"end": 7,
|
||||||
|
"value": "part001"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "whitespace",
|
||||||
|
"start": 7,
|
||||||
|
"end": 8,
|
||||||
|
"value": " "
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "operator",
|
||||||
|
"start": 8,
|
||||||
|
"end": 9,
|
||||||
|
"value": "="
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "whitespace",
|
||||||
|
"start": 9,
|
||||||
|
"end": 10,
|
||||||
|
"value": " "
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "word",
|
||||||
|
"start": 10,
|
||||||
|
"end": 23,
|
||||||
|
"value": "startSketchOn"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "brace",
|
||||||
|
"start": 23,
|
||||||
|
"end": 24,
|
||||||
|
"value": "("
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "string",
|
||||||
|
"start": 24,
|
||||||
|
"end": 28,
|
||||||
|
"value": "'XY'"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "brace",
|
||||||
|
"start": 28,
|
||||||
|
"end": 29,
|
||||||
|
"value": ")"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "whitespace",
|
||||||
|
"start": 29,
|
||||||
|
"end": 32,
|
||||||
|
"value": "\n "
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "operator",
|
||||||
|
"start": 32,
|
||||||
|
"end": 34,
|
||||||
|
"value": "|>"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "whitespace",
|
||||||
|
"start": 34,
|
||||||
|
"end": 35,
|
||||||
|
"value": " "
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "word",
|
||||||
|
"start": 35,
|
||||||
|
"end": 49,
|
||||||
|
"value": "startProfileAt"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "brace",
|
||||||
|
"start": 49,
|
||||||
|
"end": 50,
|
||||||
|
"value": "("
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "brace",
|
||||||
|
"start": 50,
|
||||||
|
"end": 51,
|
||||||
|
"value": "["
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "number",
|
||||||
|
"start": 51,
|
||||||
|
"end": 52,
|
||||||
|
"value": "0"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "comma",
|
||||||
|
"start": 52,
|
||||||
|
"end": 53,
|
||||||
|
"value": ","
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "whitespace",
|
||||||
|
"start": 53,
|
||||||
|
"end": 54,
|
||||||
|
"value": " "
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "number",
|
||||||
|
"start": 54,
|
||||||
|
"end": 55,
|
||||||
|
"value": "0"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "brace",
|
||||||
|
"start": 55,
|
||||||
|
"end": 56,
|
||||||
|
"value": "]"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "comma",
|
||||||
|
"start": 56,
|
||||||
|
"end": 57,
|
||||||
|
"value": ","
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "whitespace",
|
||||||
|
"start": 57,
|
||||||
|
"end": 58,
|
||||||
|
"value": " "
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "operator",
|
||||||
|
"start": 58,
|
||||||
|
"end": 59,
|
||||||
|
"value": "%"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "brace",
|
||||||
|
"start": 59,
|
||||||
|
"end": 60,
|
||||||
|
"value": ")"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "whitespace",
|
||||||
|
"start": 60,
|
||||||
|
"end": 63,
|
||||||
|
"value": "\n "
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "operator",
|
||||||
|
"start": 63,
|
||||||
|
"end": 65,
|
||||||
|
"value": "|>"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "whitespace",
|
||||||
|
"start": 65,
|
||||||
|
"end": 66,
|
||||||
|
"value": " "
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "word",
|
||||||
|
"start": 66,
|
||||||
|
"end": 70,
|
||||||
|
"value": "line"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "brace",
|
||||||
|
"start": 70,
|
||||||
|
"end": 71,
|
||||||
|
"value": "("
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "brace",
|
||||||
|
"start": 71,
|
||||||
|
"end": 72,
|
||||||
|
"value": "["
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "number",
|
||||||
|
"start": 72,
|
||||||
|
"end": 73,
|
||||||
|
"value": "1"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "comma",
|
||||||
|
"start": 73,
|
||||||
|
"end": 74,
|
||||||
|
"value": ","
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "whitespace",
|
||||||
|
"start": 74,
|
||||||
|
"end": 75,
|
||||||
|
"value": " "
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "number",
|
||||||
|
"start": 75,
|
||||||
|
"end": 79,
|
||||||
|
"value": "3.82"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "brace",
|
||||||
|
"start": 79,
|
||||||
|
"end": 80,
|
||||||
|
"value": "]"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "comma",
|
||||||
|
"start": 80,
|
||||||
|
"end": 81,
|
||||||
|
"value": ","
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "whitespace",
|
||||||
|
"start": 81,
|
||||||
|
"end": 82,
|
||||||
|
"value": " "
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "operator",
|
||||||
|
"start": 82,
|
||||||
|
"end": 83,
|
||||||
|
"value": "%"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "comma",
|
||||||
|
"start": 83,
|
||||||
|
"end": 84,
|
||||||
|
"value": ","
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "whitespace",
|
||||||
|
"start": 84,
|
||||||
|
"end": 85,
|
||||||
|
"value": " "
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "dollar",
|
||||||
|
"start": 85,
|
||||||
|
"end": 86,
|
||||||
|
"value": "$"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "word",
|
||||||
|
"start": 86,
|
||||||
|
"end": 91,
|
||||||
|
"value": "seg01"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "brace",
|
||||||
|
"start": 91,
|
||||||
|
"end": 92,
|
||||||
|
"value": ")"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "whitespace",
|
||||||
|
"start": 92,
|
||||||
|
"end": 95,
|
||||||
|
"value": "\n "
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "operator",
|
||||||
|
"start": 95,
|
||||||
|
"end": 97,
|
||||||
|
"value": "|>"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "whitespace",
|
||||||
|
"start": 97,
|
||||||
|
"end": 98,
|
||||||
|
"value": " "
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "word",
|
||||||
|
"start": 98,
|
||||||
|
"end": 111,
|
||||||
|
"value": "angledLineToX"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "brace",
|
||||||
|
"start": 111,
|
||||||
|
"end": 112,
|
||||||
|
"value": "("
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "brace",
|
||||||
|
"start": 112,
|
||||||
|
"end": 113,
|
||||||
|
"value": "["
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "operator",
|
||||||
|
"start": 113,
|
||||||
|
"end": 114,
|
||||||
|
"value": "-"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "word",
|
||||||
|
"start": 114,
|
||||||
|
"end": 133,
|
||||||
|
"value": "angleToMatchLengthX"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "brace",
|
||||||
|
"start": 133,
|
||||||
|
"end": 134,
|
||||||
|
"value": "("
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "word",
|
||||||
|
"start": 134,
|
||||||
|
"end": 139,
|
||||||
|
"value": "seg01"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "comma",
|
||||||
|
"start": 139,
|
||||||
|
"end": 140,
|
||||||
|
"value": ","
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "whitespace",
|
||||||
|
"start": 140,
|
||||||
|
"end": 141,
|
||||||
|
"value": " "
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "number",
|
||||||
|
"start": 141,
|
||||||
|
"end": 142,
|
||||||
|
"value": "3"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "comma",
|
||||||
|
"start": 142,
|
||||||
|
"end": 143,
|
||||||
|
"value": ","
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "whitespace",
|
||||||
|
"start": 143,
|
||||||
|
"end": 144,
|
||||||
|
"value": " "
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "operator",
|
||||||
|
"start": 144,
|
||||||
|
"end": 145,
|
||||||
|
"value": "%"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "brace",
|
||||||
|
"start": 145,
|
||||||
|
"end": 146,
|
||||||
|
"value": ")"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "comma",
|
||||||
|
"start": 146,
|
||||||
|
"end": 147,
|
||||||
|
"value": ","
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "whitespace",
|
||||||
|
"start": 147,
|
||||||
|
"end": 148,
|
||||||
|
"value": " "
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "number",
|
||||||
|
"start": 148,
|
||||||
|
"end": 149,
|
||||||
|
"value": "3"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "brace",
|
||||||
|
"start": 149,
|
||||||
|
"end": 150,
|
||||||
|
"value": "]"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "comma",
|
||||||
|
"start": 150,
|
||||||
|
"end": 151,
|
||||||
|
"value": ","
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "whitespace",
|
||||||
|
"start": 151,
|
||||||
|
"end": 152,
|
||||||
|
"value": " "
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "operator",
|
||||||
|
"start": 152,
|
||||||
|
"end": 153,
|
||||||
|
"value": "%"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "brace",
|
||||||
|
"start": 153,
|
||||||
|
"end": 154,
|
||||||
|
"value": ")"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "whitespace",
|
||||||
|
"start": 154,
|
||||||
|
"end": 157,
|
||||||
|
"value": "\n "
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "operator",
|
||||||
|
"start": 157,
|
||||||
|
"end": 159,
|
||||||
|
"value": "|>"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "whitespace",
|
||||||
|
"start": 159,
|
||||||
|
"end": 160,
|
||||||
|
"value": " "
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "word",
|
||||||
|
"start": 160,
|
||||||
|
"end": 165,
|
||||||
|
"value": "close"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "brace",
|
||||||
|
"start": 165,
|
||||||
|
"end": 166,
|
||||||
|
"value": "("
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "operator",
|
||||||
|
"start": 166,
|
||||||
|
"end": 167,
|
||||||
|
"value": "%"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "brace",
|
||||||
|
"start": 167,
|
||||||
|
"end": 168,
|
||||||
|
"value": ")"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "whitespace",
|
||||||
|
"start": 168,
|
||||||
|
"end": 171,
|
||||||
|
"value": "\n "
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "operator",
|
||||||
|
"start": 171,
|
||||||
|
"end": 173,
|
||||||
|
"value": "|>"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "whitespace",
|
||||||
|
"start": 173,
|
||||||
|
"end": 174,
|
||||||
|
"value": " "
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "word",
|
||||||
|
"start": 174,
|
||||||
|
"end": 181,
|
||||||
|
"value": "extrude"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "brace",
|
||||||
|
"start": 181,
|
||||||
|
"end": 182,
|
||||||
|
"value": "("
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "number",
|
||||||
|
"start": 182,
|
||||||
|
"end": 184,
|
||||||
|
"value": "10"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "comma",
|
||||||
|
"start": 184,
|
||||||
|
"end": 185,
|
||||||
|
"value": ","
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "whitespace",
|
||||||
|
"start": 185,
|
||||||
|
"end": 186,
|
||||||
|
"value": " "
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "operator",
|
||||||
|
"start": 186,
|
||||||
|
"end": 187,
|
||||||
|
"value": "%"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "brace",
|
||||||
|
"start": 187,
|
||||||
|
"end": 188,
|
||||||
|
"value": ")"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "whitespace",
|
||||||
|
"start": 188,
|
||||||
|
"end": 189,
|
||||||
|
"value": "\n"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
@ -0,0 +1,291 @@
|
|||||||
|
---
|
||||||
|
source: kcl/src/simulation_tests.rs
|
||||||
|
description: Result of parsing big_number_angle_to_match_length_y.kcl
|
||||||
|
snapshot_kind: text
|
||||||
|
---
|
||||||
|
{
|
||||||
|
"Ok": {
|
||||||
|
"body": [
|
||||||
|
{
|
||||||
|
"declarations": [
|
||||||
|
{
|
||||||
|
"end": 188,
|
||||||
|
"id": {
|
||||||
|
"end": 7,
|
||||||
|
"name": "part001",
|
||||||
|
"start": 0,
|
||||||
|
"type": "Identifier"
|
||||||
|
},
|
||||||
|
"init": {
|
||||||
|
"body": [
|
||||||
|
{
|
||||||
|
"arguments": [
|
||||||
|
{
|
||||||
|
"end": 28,
|
||||||
|
"raw": "'XY'",
|
||||||
|
"start": 24,
|
||||||
|
"type": "Literal",
|
||||||
|
"type": "Literal",
|
||||||
|
"value": "XY"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"callee": {
|
||||||
|
"end": 23,
|
||||||
|
"name": "startSketchOn",
|
||||||
|
"start": 10,
|
||||||
|
"type": "Identifier"
|
||||||
|
},
|
||||||
|
"end": 29,
|
||||||
|
"optional": false,
|
||||||
|
"start": 10,
|
||||||
|
"type": "CallExpression",
|
||||||
|
"type": "CallExpression"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"arguments": [
|
||||||
|
{
|
||||||
|
"elements": [
|
||||||
|
{
|
||||||
|
"end": 52,
|
||||||
|
"raw": "0",
|
||||||
|
"start": 51,
|
||||||
|
"type": "Literal",
|
||||||
|
"type": "Literal",
|
||||||
|
"value": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"end": 55,
|
||||||
|
"raw": "0",
|
||||||
|
"start": 54,
|
||||||
|
"type": "Literal",
|
||||||
|
"type": "Literal",
|
||||||
|
"value": 0
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"end": 56,
|
||||||
|
"start": 50,
|
||||||
|
"type": "ArrayExpression",
|
||||||
|
"type": "ArrayExpression"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"end": 59,
|
||||||
|
"start": 58,
|
||||||
|
"type": "PipeSubstitution",
|
||||||
|
"type": "PipeSubstitution"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"callee": {
|
||||||
|
"end": 49,
|
||||||
|
"name": "startProfileAt",
|
||||||
|
"start": 35,
|
||||||
|
"type": "Identifier"
|
||||||
|
},
|
||||||
|
"end": 60,
|
||||||
|
"optional": false,
|
||||||
|
"start": 35,
|
||||||
|
"type": "CallExpression",
|
||||||
|
"type": "CallExpression"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"arguments": [
|
||||||
|
{
|
||||||
|
"elements": [
|
||||||
|
{
|
||||||
|
"end": 73,
|
||||||
|
"raw": "1",
|
||||||
|
"start": 72,
|
||||||
|
"type": "Literal",
|
||||||
|
"type": "Literal",
|
||||||
|
"value": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"end": 79,
|
||||||
|
"raw": "3.82",
|
||||||
|
"start": 75,
|
||||||
|
"type": "Literal",
|
||||||
|
"type": "Literal",
|
||||||
|
"value": 3.82
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"end": 80,
|
||||||
|
"start": 71,
|
||||||
|
"type": "ArrayExpression",
|
||||||
|
"type": "ArrayExpression"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"end": 83,
|
||||||
|
"start": 82,
|
||||||
|
"type": "PipeSubstitution",
|
||||||
|
"type": "PipeSubstitution"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"end": 91,
|
||||||
|
"start": 85,
|
||||||
|
"type": "TagDeclarator",
|
||||||
|
"type": "TagDeclarator",
|
||||||
|
"value": "seg01"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"callee": {
|
||||||
|
"end": 70,
|
||||||
|
"name": "line",
|
||||||
|
"start": 66,
|
||||||
|
"type": "Identifier"
|
||||||
|
},
|
||||||
|
"end": 92,
|
||||||
|
"optional": false,
|
||||||
|
"start": 66,
|
||||||
|
"type": "CallExpression",
|
||||||
|
"type": "CallExpression"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"arguments": [
|
||||||
|
{
|
||||||
|
"elements": [
|
||||||
|
{
|
||||||
|
"argument": {
|
||||||
|
"arguments": [
|
||||||
|
{
|
||||||
|
"end": 139,
|
||||||
|
"name": "seg01",
|
||||||
|
"start": 134,
|
||||||
|
"type": "Identifier",
|
||||||
|
"type": "Identifier"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"end": 142,
|
||||||
|
"raw": "3",
|
||||||
|
"start": 141,
|
||||||
|
"type": "Literal",
|
||||||
|
"type": "Literal",
|
||||||
|
"value": 3
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"end": 145,
|
||||||
|
"start": 144,
|
||||||
|
"type": "PipeSubstitution",
|
||||||
|
"type": "PipeSubstitution"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"callee": {
|
||||||
|
"end": 133,
|
||||||
|
"name": "angleToMatchLengthY",
|
||||||
|
"start": 114,
|
||||||
|
"type": "Identifier"
|
||||||
|
},
|
||||||
|
"end": 146,
|
||||||
|
"optional": false,
|
||||||
|
"start": 114,
|
||||||
|
"type": "CallExpression",
|
||||||
|
"type": "CallExpression"
|
||||||
|
},
|
||||||
|
"end": 146,
|
||||||
|
"operator": "-",
|
||||||
|
"start": 113,
|
||||||
|
"type": "UnaryExpression",
|
||||||
|
"type": "UnaryExpression"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"end": 149,
|
||||||
|
"raw": "3",
|
||||||
|
"start": 148,
|
||||||
|
"type": "Literal",
|
||||||
|
"type": "Literal",
|
||||||
|
"value": 3
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"end": 150,
|
||||||
|
"start": 112,
|
||||||
|
"type": "ArrayExpression",
|
||||||
|
"type": "ArrayExpression"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"end": 153,
|
||||||
|
"start": 152,
|
||||||
|
"type": "PipeSubstitution",
|
||||||
|
"type": "PipeSubstitution"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"callee": {
|
||||||
|
"end": 111,
|
||||||
|
"name": "angledLineToX",
|
||||||
|
"start": 98,
|
||||||
|
"type": "Identifier"
|
||||||
|
},
|
||||||
|
"end": 154,
|
||||||
|
"optional": false,
|
||||||
|
"start": 98,
|
||||||
|
"type": "CallExpression",
|
||||||
|
"type": "CallExpression"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"arguments": [
|
||||||
|
{
|
||||||
|
"end": 167,
|
||||||
|
"start": 166,
|
||||||
|
"type": "PipeSubstitution",
|
||||||
|
"type": "PipeSubstitution"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"callee": {
|
||||||
|
"end": 165,
|
||||||
|
"name": "close",
|
||||||
|
"start": 160,
|
||||||
|
"type": "Identifier"
|
||||||
|
},
|
||||||
|
"end": 168,
|
||||||
|
"optional": false,
|
||||||
|
"start": 160,
|
||||||
|
"type": "CallExpression",
|
||||||
|
"type": "CallExpression"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"arguments": [
|
||||||
|
{
|
||||||
|
"end": 184,
|
||||||
|
"raw": "10",
|
||||||
|
"start": 182,
|
||||||
|
"type": "Literal",
|
||||||
|
"type": "Literal",
|
||||||
|
"value": 10
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"end": 187,
|
||||||
|
"start": 186,
|
||||||
|
"type": "PipeSubstitution",
|
||||||
|
"type": "PipeSubstitution"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"callee": {
|
||||||
|
"end": 181,
|
||||||
|
"name": "extrude",
|
||||||
|
"start": 174,
|
||||||
|
"type": "Identifier"
|
||||||
|
},
|
||||||
|
"end": 188,
|
||||||
|
"optional": false,
|
||||||
|
"start": 174,
|
||||||
|
"type": "CallExpression",
|
||||||
|
"type": "CallExpression"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"end": 188,
|
||||||
|
"start": 10,
|
||||||
|
"type": "PipeExpression",
|
||||||
|
"type": "PipeExpression"
|
||||||
|
},
|
||||||
|
"start": 0,
|
||||||
|
"type": "VariableDeclarator"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"end": 188,
|
||||||
|
"kind": "const",
|
||||||
|
"start": 0,
|
||||||
|
"type": "VariableDeclaration",
|
||||||
|
"type": "VariableDeclaration"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"end": 189,
|
||||||
|
"start": 0
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -0,0 +1,6 @@
|
|||||||
|
part001 = startSketchOn('XY')
|
||||||
|
|> startProfileAt([0, 0], %)
|
||||||
|
|> line([1, 3.82], %, $seg01)
|
||||||
|
|> angledLineToX([-angleToMatchLengthY(seg01, 3, %), 3], %)
|
||||||
|
|> close(%)
|
||||||
|
|> extrude(10, %)
|
||||||
@ -0,0 +1,339 @@
|
|||||||
|
---
|
||||||
|
source: kcl/src/simulation_tests.rs
|
||||||
|
description: Program memory after executing big_number_angle_to_match_length_y.kcl
|
||||||
|
snapshot_kind: text
|
||||||
|
---
|
||||||
|
{
|
||||||
|
"environments": [
|
||||||
|
{
|
||||||
|
"bindings": {
|
||||||
|
"HALF_TURN": {
|
||||||
|
"type": "Number",
|
||||||
|
"value": 180.0,
|
||||||
|
"__meta": []
|
||||||
|
},
|
||||||
|
"QUARTER_TURN": {
|
||||||
|
"type": "Number",
|
||||||
|
"value": 90.0,
|
||||||
|
"__meta": []
|
||||||
|
},
|
||||||
|
"THREE_QUARTER_TURN": {
|
||||||
|
"type": "Number",
|
||||||
|
"value": 270.0,
|
||||||
|
"__meta": []
|
||||||
|
},
|
||||||
|
"ZERO": {
|
||||||
|
"type": "Number",
|
||||||
|
"value": 0.0,
|
||||||
|
"__meta": []
|
||||||
|
},
|
||||||
|
"part001": {
|
||||||
|
"type": "Solid",
|
||||||
|
"type": "Solid",
|
||||||
|
"id": "[uuid]",
|
||||||
|
"value": [
|
||||||
|
{
|
||||||
|
"faceId": "[uuid]",
|
||||||
|
"id": "[uuid]",
|
||||||
|
"sourceRange": [
|
||||||
|
66,
|
||||||
|
92,
|
||||||
|
0
|
||||||
|
],
|
||||||
|
"tag": {
|
||||||
|
"end": 91,
|
||||||
|
"start": 85,
|
||||||
|
"type": "TagDeclarator",
|
||||||
|
"value": "seg01"
|
||||||
|
},
|
||||||
|
"type": "extrudePlane"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"faceId": "[uuid]",
|
||||||
|
"id": "[uuid]",
|
||||||
|
"sourceRange": [
|
||||||
|
98,
|
||||||
|
154,
|
||||||
|
0
|
||||||
|
],
|
||||||
|
"tag": null,
|
||||||
|
"type": "extrudePlane"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"faceId": "[uuid]",
|
||||||
|
"id": "[uuid]",
|
||||||
|
"sourceRange": [
|
||||||
|
160,
|
||||||
|
168,
|
||||||
|
0
|
||||||
|
],
|
||||||
|
"tag": null,
|
||||||
|
"type": "extrudePlane"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"sketch": {
|
||||||
|
"type": "Sketch",
|
||||||
|
"id": "[uuid]",
|
||||||
|
"paths": [
|
||||||
|
{
|
||||||
|
"__geoMeta": {
|
||||||
|
"id": "[uuid]",
|
||||||
|
"sourceRange": [
|
||||||
|
66,
|
||||||
|
92,
|
||||||
|
0
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"from": [
|
||||||
|
0.0,
|
||||||
|
0.0
|
||||||
|
],
|
||||||
|
"tag": {
|
||||||
|
"end": 91,
|
||||||
|
"start": 85,
|
||||||
|
"type": "TagDeclarator",
|
||||||
|
"value": "seg01"
|
||||||
|
},
|
||||||
|
"to": [
|
||||||
|
1.0,
|
||||||
|
3.82
|
||||||
|
],
|
||||||
|
"type": "ToPoint"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"__geoMeta": {
|
||||||
|
"id": "[uuid]",
|
||||||
|
"sourceRange": [
|
||||||
|
98,
|
||||||
|
154,
|
||||||
|
0
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"from": [
|
||||||
|
1.0,
|
||||||
|
3.82
|
||||||
|
],
|
||||||
|
"tag": null,
|
||||||
|
"to": [
|
||||||
|
3.0,
|
||||||
|
3.3954
|
||||||
|
],
|
||||||
|
"type": "ToPoint"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"__geoMeta": {
|
||||||
|
"id": "[uuid]",
|
||||||
|
"sourceRange": [
|
||||||
|
160,
|
||||||
|
168,
|
||||||
|
0
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"from": [
|
||||||
|
3.0,
|
||||||
|
3.3954
|
||||||
|
],
|
||||||
|
"tag": null,
|
||||||
|
"to": [
|
||||||
|
0.0,
|
||||||
|
0.0
|
||||||
|
],
|
||||||
|
"type": "ToPoint"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"on": {
|
||||||
|
"type": "plane",
|
||||||
|
"id": "[uuid]",
|
||||||
|
"value": "XY",
|
||||||
|
"origin": {
|
||||||
|
"x": 0.0,
|
||||||
|
"y": 0.0,
|
||||||
|
"z": 0.0
|
||||||
|
},
|
||||||
|
"xAxis": {
|
||||||
|
"x": 1.0,
|
||||||
|
"y": 0.0,
|
||||||
|
"z": 0.0
|
||||||
|
},
|
||||||
|
"yAxis": {
|
||||||
|
"x": 0.0,
|
||||||
|
"y": 1.0,
|
||||||
|
"z": 0.0
|
||||||
|
},
|
||||||
|
"zAxis": {
|
||||||
|
"x": 0.0,
|
||||||
|
"y": 0.0,
|
||||||
|
"z": 1.0
|
||||||
|
},
|
||||||
|
"__meta": []
|
||||||
|
},
|
||||||
|
"start": {
|
||||||
|
"from": [
|
||||||
|
0.0,
|
||||||
|
0.0
|
||||||
|
],
|
||||||
|
"to": [
|
||||||
|
0.0,
|
||||||
|
0.0
|
||||||
|
],
|
||||||
|
"tag": null,
|
||||||
|
"__geoMeta": {
|
||||||
|
"id": "[uuid]",
|
||||||
|
"sourceRange": [
|
||||||
|
35,
|
||||||
|
60,
|
||||||
|
0
|
||||||
|
]
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"tags": {
|
||||||
|
"seg01": {
|
||||||
|
"type": "TagIdentifier",
|
||||||
|
"value": "seg01",
|
||||||
|
"info": {
|
||||||
|
"type": "TagEngineInfo",
|
||||||
|
"id": "[uuid]",
|
||||||
|
"sketch": "[uuid]",
|
||||||
|
"path": {
|
||||||
|
"__geoMeta": {
|
||||||
|
"id": "[uuid]",
|
||||||
|
"sourceRange": [
|
||||||
|
66,
|
||||||
|
92,
|
||||||
|
0
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"from": [
|
||||||
|
0.0,
|
||||||
|
0.0
|
||||||
|
],
|
||||||
|
"tag": {
|
||||||
|
"end": 91,
|
||||||
|
"start": 85,
|
||||||
|
"type": "TagDeclarator",
|
||||||
|
"value": "seg01"
|
||||||
|
},
|
||||||
|
"to": [
|
||||||
|
1.0,
|
||||||
|
3.82
|
||||||
|
],
|
||||||
|
"type": "ToPoint"
|
||||||
|
},
|
||||||
|
"surface": {
|
||||||
|
"faceId": "[uuid]",
|
||||||
|
"id": "[uuid]",
|
||||||
|
"sourceRange": [
|
||||||
|
66,
|
||||||
|
92,
|
||||||
|
0
|
||||||
|
],
|
||||||
|
"tag": {
|
||||||
|
"end": 91,
|
||||||
|
"start": 85,
|
||||||
|
"type": "TagDeclarator",
|
||||||
|
"value": "seg01"
|
||||||
|
},
|
||||||
|
"type": "extrudePlane"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"__meta": [
|
||||||
|
{
|
||||||
|
"sourceRange": [
|
||||||
|
85,
|
||||||
|
91,
|
||||||
|
0
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"__meta": [
|
||||||
|
{
|
||||||
|
"sourceRange": [
|
||||||
|
35,
|
||||||
|
60,
|
||||||
|
0
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"height": 10.0,
|
||||||
|
"startCapId": "[uuid]",
|
||||||
|
"endCapId": "[uuid]",
|
||||||
|
"__meta": [
|
||||||
|
{
|
||||||
|
"sourceRange": [
|
||||||
|
35,
|
||||||
|
60,
|
||||||
|
0
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"seg01": {
|
||||||
|
"type": "TagIdentifier",
|
||||||
|
"type": "TagIdentifier",
|
||||||
|
"value": "seg01",
|
||||||
|
"info": {
|
||||||
|
"type": "TagEngineInfo",
|
||||||
|
"id": "[uuid]",
|
||||||
|
"sketch": "[uuid]",
|
||||||
|
"path": {
|
||||||
|
"__geoMeta": {
|
||||||
|
"id": "[uuid]",
|
||||||
|
"sourceRange": [
|
||||||
|
66,
|
||||||
|
92,
|
||||||
|
0
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"from": [
|
||||||
|
0.0,
|
||||||
|
0.0
|
||||||
|
],
|
||||||
|
"tag": {
|
||||||
|
"end": 91,
|
||||||
|
"start": 85,
|
||||||
|
"type": "TagDeclarator",
|
||||||
|
"value": "seg01"
|
||||||
|
},
|
||||||
|
"to": [
|
||||||
|
1.0,
|
||||||
|
3.82
|
||||||
|
],
|
||||||
|
"type": "ToPoint"
|
||||||
|
},
|
||||||
|
"surface": {
|
||||||
|
"faceId": "[uuid]",
|
||||||
|
"id": "[uuid]",
|
||||||
|
"sourceRange": [
|
||||||
|
66,
|
||||||
|
92,
|
||||||
|
0
|
||||||
|
],
|
||||||
|
"tag": {
|
||||||
|
"end": 91,
|
||||||
|
"start": 85,
|
||||||
|
"type": "TagDeclarator",
|
||||||
|
"value": "seg01"
|
||||||
|
},
|
||||||
|
"type": "extrudePlane"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"__meta": [
|
||||||
|
{
|
||||||
|
"sourceRange": [
|
||||||
|
85,
|
||||||
|
91,
|
||||||
|
0
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"parent": null
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"currentEnv": 0,
|
||||||
|
"return": null
|
||||||
|
}
|
||||||
|
After Width: | Height: | Size: 56 KiB |
@ -0,0 +1,519 @@
|
|||||||
|
---
|
||||||
|
source: kcl/src/simulation_tests.rs
|
||||||
|
description: Result of tokenizing big_number_angle_to_match_length_y.kcl
|
||||||
|
snapshot_kind: text
|
||||||
|
---
|
||||||
|
{
|
||||||
|
"Ok": [
|
||||||
|
{
|
||||||
|
"type": "word",
|
||||||
|
"start": 0,
|
||||||
|
"end": 7,
|
||||||
|
"value": "part001"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "whitespace",
|
||||||
|
"start": 7,
|
||||||
|
"end": 8,
|
||||||
|
"value": " "
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "operator",
|
||||||
|
"start": 8,
|
||||||
|
"end": 9,
|
||||||
|
"value": "="
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "whitespace",
|
||||||
|
"start": 9,
|
||||||
|
"end": 10,
|
||||||
|
"value": " "
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "word",
|
||||||
|
"start": 10,
|
||||||
|
"end": 23,
|
||||||
|
"value": "startSketchOn"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "brace",
|
||||||
|
"start": 23,
|
||||||
|
"end": 24,
|
||||||
|
"value": "("
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "string",
|
||||||
|
"start": 24,
|
||||||
|
"end": 28,
|
||||||
|
"value": "'XY'"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "brace",
|
||||||
|
"start": 28,
|
||||||
|
"end": 29,
|
||||||
|
"value": ")"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "whitespace",
|
||||||
|
"start": 29,
|
||||||
|
"end": 32,
|
||||||
|
"value": "\n "
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "operator",
|
||||||
|
"start": 32,
|
||||||
|
"end": 34,
|
||||||
|
"value": "|>"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "whitespace",
|
||||||
|
"start": 34,
|
||||||
|
"end": 35,
|
||||||
|
"value": " "
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "word",
|
||||||
|
"start": 35,
|
||||||
|
"end": 49,
|
||||||
|
"value": "startProfileAt"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "brace",
|
||||||
|
"start": 49,
|
||||||
|
"end": 50,
|
||||||
|
"value": "("
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "brace",
|
||||||
|
"start": 50,
|
||||||
|
"end": 51,
|
||||||
|
"value": "["
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "number",
|
||||||
|
"start": 51,
|
||||||
|
"end": 52,
|
||||||
|
"value": "0"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "comma",
|
||||||
|
"start": 52,
|
||||||
|
"end": 53,
|
||||||
|
"value": ","
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "whitespace",
|
||||||
|
"start": 53,
|
||||||
|
"end": 54,
|
||||||
|
"value": " "
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "number",
|
||||||
|
"start": 54,
|
||||||
|
"end": 55,
|
||||||
|
"value": "0"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "brace",
|
||||||
|
"start": 55,
|
||||||
|
"end": 56,
|
||||||
|
"value": "]"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "comma",
|
||||||
|
"start": 56,
|
||||||
|
"end": 57,
|
||||||
|
"value": ","
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "whitespace",
|
||||||
|
"start": 57,
|
||||||
|
"end": 58,
|
||||||
|
"value": " "
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "operator",
|
||||||
|
"start": 58,
|
||||||
|
"end": 59,
|
||||||
|
"value": "%"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "brace",
|
||||||
|
"start": 59,
|
||||||
|
"end": 60,
|
||||||
|
"value": ")"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "whitespace",
|
||||||
|
"start": 60,
|
||||||
|
"end": 63,
|
||||||
|
"value": "\n "
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "operator",
|
||||||
|
"start": 63,
|
||||||
|
"end": 65,
|
||||||
|
"value": "|>"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "whitespace",
|
||||||
|
"start": 65,
|
||||||
|
"end": 66,
|
||||||
|
"value": " "
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "word",
|
||||||
|
"start": 66,
|
||||||
|
"end": 70,
|
||||||
|
"value": "line"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "brace",
|
||||||
|
"start": 70,
|
||||||
|
"end": 71,
|
||||||
|
"value": "("
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "brace",
|
||||||
|
"start": 71,
|
||||||
|
"end": 72,
|
||||||
|
"value": "["
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "number",
|
||||||
|
"start": 72,
|
||||||
|
"end": 73,
|
||||||
|
"value": "1"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "comma",
|
||||||
|
"start": 73,
|
||||||
|
"end": 74,
|
||||||
|
"value": ","
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "whitespace",
|
||||||
|
"start": 74,
|
||||||
|
"end": 75,
|
||||||
|
"value": " "
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "number",
|
||||||
|
"start": 75,
|
||||||
|
"end": 79,
|
||||||
|
"value": "3.82"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "brace",
|
||||||
|
"start": 79,
|
||||||
|
"end": 80,
|
||||||
|
"value": "]"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "comma",
|
||||||
|
"start": 80,
|
||||||
|
"end": 81,
|
||||||
|
"value": ","
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "whitespace",
|
||||||
|
"start": 81,
|
||||||
|
"end": 82,
|
||||||
|
"value": " "
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "operator",
|
||||||
|
"start": 82,
|
||||||
|
"end": 83,
|
||||||
|
"value": "%"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "comma",
|
||||||
|
"start": 83,
|
||||||
|
"end": 84,
|
||||||
|
"value": ","
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "whitespace",
|
||||||
|
"start": 84,
|
||||||
|
"end": 85,
|
||||||
|
"value": " "
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "dollar",
|
||||||
|
"start": 85,
|
||||||
|
"end": 86,
|
||||||
|
"value": "$"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "word",
|
||||||
|
"start": 86,
|
||||||
|
"end": 91,
|
||||||
|
"value": "seg01"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "brace",
|
||||||
|
"start": 91,
|
||||||
|
"end": 92,
|
||||||
|
"value": ")"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "whitespace",
|
||||||
|
"start": 92,
|
||||||
|
"end": 95,
|
||||||
|
"value": "\n "
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "operator",
|
||||||
|
"start": 95,
|
||||||
|
"end": 97,
|
||||||
|
"value": "|>"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "whitespace",
|
||||||
|
"start": 97,
|
||||||
|
"end": 98,
|
||||||
|
"value": " "
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "word",
|
||||||
|
"start": 98,
|
||||||
|
"end": 111,
|
||||||
|
"value": "angledLineToX"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "brace",
|
||||||
|
"start": 111,
|
||||||
|
"end": 112,
|
||||||
|
"value": "("
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "brace",
|
||||||
|
"start": 112,
|
||||||
|
"end": 113,
|
||||||
|
"value": "["
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "operator",
|
||||||
|
"start": 113,
|
||||||
|
"end": 114,
|
||||||
|
"value": "-"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "word",
|
||||||
|
"start": 114,
|
||||||
|
"end": 133,
|
||||||
|
"value": "angleToMatchLengthY"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "brace",
|
||||||
|
"start": 133,
|
||||||
|
"end": 134,
|
||||||
|
"value": "("
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "word",
|
||||||
|
"start": 134,
|
||||||
|
"end": 139,
|
||||||
|
"value": "seg01"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "comma",
|
||||||
|
"start": 139,
|
||||||
|
"end": 140,
|
||||||
|
"value": ","
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "whitespace",
|
||||||
|
"start": 140,
|
||||||
|
"end": 141,
|
||||||
|
"value": " "
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "number",
|
||||||
|
"start": 141,
|
||||||
|
"end": 142,
|
||||||
|
"value": "3"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "comma",
|
||||||
|
"start": 142,
|
||||||
|
"end": 143,
|
||||||
|
"value": ","
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "whitespace",
|
||||||
|
"start": 143,
|
||||||
|
"end": 144,
|
||||||
|
"value": " "
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "operator",
|
||||||
|
"start": 144,
|
||||||
|
"end": 145,
|
||||||
|
"value": "%"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "brace",
|
||||||
|
"start": 145,
|
||||||
|
"end": 146,
|
||||||
|
"value": ")"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "comma",
|
||||||
|
"start": 146,
|
||||||
|
"end": 147,
|
||||||
|
"value": ","
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "whitespace",
|
||||||
|
"start": 147,
|
||||||
|
"end": 148,
|
||||||
|
"value": " "
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "number",
|
||||||
|
"start": 148,
|
||||||
|
"end": 149,
|
||||||
|
"value": "3"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "brace",
|
||||||
|
"start": 149,
|
||||||
|
"end": 150,
|
||||||
|
"value": "]"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "comma",
|
||||||
|
"start": 150,
|
||||||
|
"end": 151,
|
||||||
|
"value": ","
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "whitespace",
|
||||||
|
"start": 151,
|
||||||
|
"end": 152,
|
||||||
|
"value": " "
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "operator",
|
||||||
|
"start": 152,
|
||||||
|
"end": 153,
|
||||||
|
"value": "%"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "brace",
|
||||||
|
"start": 153,
|
||||||
|
"end": 154,
|
||||||
|
"value": ")"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "whitespace",
|
||||||
|
"start": 154,
|
||||||
|
"end": 157,
|
||||||
|
"value": "\n "
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "operator",
|
||||||
|
"start": 157,
|
||||||
|
"end": 159,
|
||||||
|
"value": "|>"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "whitespace",
|
||||||
|
"start": 159,
|
||||||
|
"end": 160,
|
||||||
|
"value": " "
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "word",
|
||||||
|
"start": 160,
|
||||||
|
"end": 165,
|
||||||
|
"value": "close"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "brace",
|
||||||
|
"start": 165,
|
||||||
|
"end": 166,
|
||||||
|
"value": "("
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "operator",
|
||||||
|
"start": 166,
|
||||||
|
"end": 167,
|
||||||
|
"value": "%"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "brace",
|
||||||
|
"start": 167,
|
||||||
|
"end": 168,
|
||||||
|
"value": ")"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "whitespace",
|
||||||
|
"start": 168,
|
||||||
|
"end": 171,
|
||||||
|
"value": "\n "
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "operator",
|
||||||
|
"start": 171,
|
||||||
|
"end": 173,
|
||||||
|
"value": "|>"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "whitespace",
|
||||||
|
"start": 173,
|
||||||
|
"end": 174,
|
||||||
|
"value": " "
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "word",
|
||||||
|
"start": 174,
|
||||||
|
"end": 181,
|
||||||
|
"value": "extrude"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "brace",
|
||||||
|
"start": 181,
|
||||||
|
"end": 182,
|
||||||
|
"value": "("
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "number",
|
||||||
|
"start": 182,
|
||||||
|
"end": 184,
|
||||||
|
"value": "10"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "comma",
|
||||||
|
"start": 184,
|
||||||
|
"end": 185,
|
||||||
|
"value": ","
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "whitespace",
|
||||||
|
"start": 185,
|
||||||
|
"end": 186,
|
||||||
|
"value": " "
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "operator",
|
||||||
|
"start": 186,
|
||||||
|
"end": 187,
|
||||||
|
"value": "%"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "brace",
|
||||||
|
"start": 187,
|
||||||
|
"end": 188,
|
||||||
|
"value": ")"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "whitespace",
|
||||||
|
"start": 188,
|
||||||
|
"end": 189,
|
||||||
|
"value": "\n"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
671
src/wasm-lib/kcl/tests/circular_pattern3d_a_pattern/ast.snap
Normal file
@ -0,0 +1,671 @@
|
|||||||
|
---
|
||||||
|
source: kcl/src/simulation_tests.rs
|
||||||
|
description: Result of parsing circular_pattern3d_a_pattern.kcl
|
||||||
|
snapshot_kind: text
|
||||||
|
---
|
||||||
|
{
|
||||||
|
"Ok": {
|
||||||
|
"body": [
|
||||||
|
{
|
||||||
|
"declarations": [
|
||||||
|
{
|
||||||
|
"end": 163,
|
||||||
|
"id": {
|
||||||
|
"end": 13,
|
||||||
|
"name": "exampleSketch",
|
||||||
|
"start": 0,
|
||||||
|
"type": "Identifier"
|
||||||
|
},
|
||||||
|
"init": {
|
||||||
|
"body": [
|
||||||
|
{
|
||||||
|
"arguments": [
|
||||||
|
{
|
||||||
|
"end": 34,
|
||||||
|
"raw": "'XZ'",
|
||||||
|
"start": 30,
|
||||||
|
"type": "Literal",
|
||||||
|
"type": "Literal",
|
||||||
|
"value": "XZ"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"callee": {
|
||||||
|
"end": 29,
|
||||||
|
"name": "startSketchOn",
|
||||||
|
"start": 16,
|
||||||
|
"type": "Identifier"
|
||||||
|
},
|
||||||
|
"end": 35,
|
||||||
|
"optional": false,
|
||||||
|
"start": 16,
|
||||||
|
"type": "CallExpression",
|
||||||
|
"type": "CallExpression"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"arguments": [
|
||||||
|
{
|
||||||
|
"elements": [
|
||||||
|
{
|
||||||
|
"end": 58,
|
||||||
|
"raw": "0",
|
||||||
|
"start": 57,
|
||||||
|
"type": "Literal",
|
||||||
|
"type": "Literal",
|
||||||
|
"value": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"end": 61,
|
||||||
|
"raw": "0",
|
||||||
|
"start": 60,
|
||||||
|
"type": "Literal",
|
||||||
|
"type": "Literal",
|
||||||
|
"value": 0
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"end": 62,
|
||||||
|
"start": 56,
|
||||||
|
"type": "ArrayExpression",
|
||||||
|
"type": "ArrayExpression"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"end": 65,
|
||||||
|
"start": 64,
|
||||||
|
"type": "PipeSubstitution",
|
||||||
|
"type": "PipeSubstitution"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"callee": {
|
||||||
|
"end": 55,
|
||||||
|
"name": "startProfileAt",
|
||||||
|
"start": 41,
|
||||||
|
"type": "Identifier"
|
||||||
|
},
|
||||||
|
"end": 66,
|
||||||
|
"optional": false,
|
||||||
|
"start": 41,
|
||||||
|
"type": "CallExpression",
|
||||||
|
"type": "CallExpression"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"arguments": [
|
||||||
|
{
|
||||||
|
"elements": [
|
||||||
|
{
|
||||||
|
"end": 79,
|
||||||
|
"raw": "0",
|
||||||
|
"start": 78,
|
||||||
|
"type": "Literal",
|
||||||
|
"type": "Literal",
|
||||||
|
"value": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"end": 82,
|
||||||
|
"raw": "2",
|
||||||
|
"start": 81,
|
||||||
|
"type": "Literal",
|
||||||
|
"type": "Literal",
|
||||||
|
"value": 2
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"end": 83,
|
||||||
|
"start": 77,
|
||||||
|
"type": "ArrayExpression",
|
||||||
|
"type": "ArrayExpression"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"end": 86,
|
||||||
|
"start": 85,
|
||||||
|
"type": "PipeSubstitution",
|
||||||
|
"type": "PipeSubstitution"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"callee": {
|
||||||
|
"end": 76,
|
||||||
|
"name": "line",
|
||||||
|
"start": 72,
|
||||||
|
"type": "Identifier"
|
||||||
|
},
|
||||||
|
"end": 87,
|
||||||
|
"optional": false,
|
||||||
|
"start": 72,
|
||||||
|
"type": "CallExpression",
|
||||||
|
"type": "CallExpression"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"arguments": [
|
||||||
|
{
|
||||||
|
"elements": [
|
||||||
|
{
|
||||||
|
"end": 100,
|
||||||
|
"raw": "3",
|
||||||
|
"start": 99,
|
||||||
|
"type": "Literal",
|
||||||
|
"type": "Literal",
|
||||||
|
"value": 3
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"end": 103,
|
||||||
|
"raw": "1",
|
||||||
|
"start": 102,
|
||||||
|
"type": "Literal",
|
||||||
|
"type": "Literal",
|
||||||
|
"value": 1
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"end": 104,
|
||||||
|
"start": 98,
|
||||||
|
"type": "ArrayExpression",
|
||||||
|
"type": "ArrayExpression"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"end": 107,
|
||||||
|
"start": 106,
|
||||||
|
"type": "PipeSubstitution",
|
||||||
|
"type": "PipeSubstitution"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"callee": {
|
||||||
|
"end": 97,
|
||||||
|
"name": "line",
|
||||||
|
"start": 93,
|
||||||
|
"type": "Identifier"
|
||||||
|
},
|
||||||
|
"end": 108,
|
||||||
|
"optional": false,
|
||||||
|
"start": 93,
|
||||||
|
"type": "CallExpression",
|
||||||
|
"type": "CallExpression"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"arguments": [
|
||||||
|
{
|
||||||
|
"elements": [
|
||||||
|
{
|
||||||
|
"end": 121,
|
||||||
|
"raw": "0",
|
||||||
|
"start": 120,
|
||||||
|
"type": "Literal",
|
||||||
|
"type": "Literal",
|
||||||
|
"value": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"argument": {
|
||||||
|
"end": 125,
|
||||||
|
"raw": "4",
|
||||||
|
"start": 124,
|
||||||
|
"type": "Literal",
|
||||||
|
"type": "Literal",
|
||||||
|
"value": 4
|
||||||
|
},
|
||||||
|
"end": 125,
|
||||||
|
"operator": "-",
|
||||||
|
"start": 123,
|
||||||
|
"type": "UnaryExpression",
|
||||||
|
"type": "UnaryExpression"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"end": 126,
|
||||||
|
"start": 119,
|
||||||
|
"type": "ArrayExpression",
|
||||||
|
"type": "ArrayExpression"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"end": 129,
|
||||||
|
"start": 128,
|
||||||
|
"type": "PipeSubstitution",
|
||||||
|
"type": "PipeSubstitution"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"callee": {
|
||||||
|
"end": 118,
|
||||||
|
"name": "line",
|
||||||
|
"start": 114,
|
||||||
|
"type": "Identifier"
|
||||||
|
},
|
||||||
|
"end": 130,
|
||||||
|
"optional": false,
|
||||||
|
"start": 114,
|
||||||
|
"type": "CallExpression",
|
||||||
|
"type": "CallExpression"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"arguments": [
|
||||||
|
{
|
||||||
|
"end": 143,
|
||||||
|
"start": 142,
|
||||||
|
"type": "PipeSubstitution",
|
||||||
|
"type": "PipeSubstitution"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"callee": {
|
||||||
|
"end": 141,
|
||||||
|
"name": "close",
|
||||||
|
"start": 136,
|
||||||
|
"type": "Identifier"
|
||||||
|
},
|
||||||
|
"end": 144,
|
||||||
|
"optional": false,
|
||||||
|
"start": 136,
|
||||||
|
"type": "CallExpression",
|
||||||
|
"type": "CallExpression"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"arguments": [
|
||||||
|
{
|
||||||
|
"end": 159,
|
||||||
|
"raw": "1",
|
||||||
|
"start": 158,
|
||||||
|
"type": "Literal",
|
||||||
|
"type": "Literal",
|
||||||
|
"value": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"end": 162,
|
||||||
|
"start": 161,
|
||||||
|
"type": "PipeSubstitution",
|
||||||
|
"type": "PipeSubstitution"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"callee": {
|
||||||
|
"end": 157,
|
||||||
|
"name": "extrude",
|
||||||
|
"start": 150,
|
||||||
|
"type": "Identifier"
|
||||||
|
},
|
||||||
|
"end": 163,
|
||||||
|
"optional": false,
|
||||||
|
"start": 150,
|
||||||
|
"type": "CallExpression",
|
||||||
|
"type": "CallExpression"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"end": 163,
|
||||||
|
"start": 16,
|
||||||
|
"type": "PipeExpression",
|
||||||
|
"type": "PipeExpression"
|
||||||
|
},
|
||||||
|
"start": 0,
|
||||||
|
"type": "VariableDeclarator"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"end": 163,
|
||||||
|
"kind": "const",
|
||||||
|
"start": 0,
|
||||||
|
"type": "VariableDeclaration",
|
||||||
|
"type": "VariableDeclaration"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"declarations": [
|
||||||
|
{
|
||||||
|
"end": 258,
|
||||||
|
"id": {
|
||||||
|
"end": 171,
|
||||||
|
"name": "pattn1",
|
||||||
|
"start": 165,
|
||||||
|
"type": "Identifier"
|
||||||
|
},
|
||||||
|
"init": {
|
||||||
|
"arguments": [
|
||||||
|
{
|
||||||
|
"end": 242,
|
||||||
|
"properties": [
|
||||||
|
{
|
||||||
|
"end": 209,
|
||||||
|
"key": {
|
||||||
|
"end": 198,
|
||||||
|
"name": "axis",
|
||||||
|
"start": 194,
|
||||||
|
"type": "Identifier"
|
||||||
|
},
|
||||||
|
"start": 194,
|
||||||
|
"type": "ObjectProperty",
|
||||||
|
"value": {
|
||||||
|
"elements": [
|
||||||
|
{
|
||||||
|
"end": 202,
|
||||||
|
"raw": "1",
|
||||||
|
"start": 201,
|
||||||
|
"type": "Literal",
|
||||||
|
"type": "Literal",
|
||||||
|
"value": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"end": 205,
|
||||||
|
"raw": "0",
|
||||||
|
"start": 204,
|
||||||
|
"type": "Literal",
|
||||||
|
"type": "Literal",
|
||||||
|
"value": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"end": 208,
|
||||||
|
"raw": "0",
|
||||||
|
"start": 207,
|
||||||
|
"type": "Literal",
|
||||||
|
"type": "Literal",
|
||||||
|
"value": 0
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"end": 209,
|
||||||
|
"start": 200,
|
||||||
|
"type": "ArrayExpression",
|
||||||
|
"type": "ArrayExpression"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"end": 225,
|
||||||
|
"key": {
|
||||||
|
"end": 222,
|
||||||
|
"name": "instances",
|
||||||
|
"start": 213,
|
||||||
|
"type": "Identifier"
|
||||||
|
},
|
||||||
|
"start": 213,
|
||||||
|
"type": "ObjectProperty",
|
||||||
|
"value": {
|
||||||
|
"end": 225,
|
||||||
|
"raw": "7",
|
||||||
|
"start": 224,
|
||||||
|
"type": "Literal",
|
||||||
|
"type": "Literal",
|
||||||
|
"value": 7
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"end": 240,
|
||||||
|
"key": {
|
||||||
|
"end": 237,
|
||||||
|
"name": "distance",
|
||||||
|
"start": 229,
|
||||||
|
"type": "Identifier"
|
||||||
|
},
|
||||||
|
"start": 229,
|
||||||
|
"type": "ObjectProperty",
|
||||||
|
"value": {
|
||||||
|
"end": 240,
|
||||||
|
"raw": "6",
|
||||||
|
"start": 239,
|
||||||
|
"type": "Literal",
|
||||||
|
"type": "Literal",
|
||||||
|
"value": 6
|
||||||
|
}
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"start": 190,
|
||||||
|
"type": "ObjectExpression",
|
||||||
|
"type": "ObjectExpression"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"end": 257,
|
||||||
|
"name": "exampleSketch",
|
||||||
|
"start": 244,
|
||||||
|
"type": "Identifier",
|
||||||
|
"type": "Identifier"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"callee": {
|
||||||
|
"end": 189,
|
||||||
|
"name": "patternLinear3d",
|
||||||
|
"start": 174,
|
||||||
|
"type": "Identifier"
|
||||||
|
},
|
||||||
|
"end": 258,
|
||||||
|
"optional": false,
|
||||||
|
"start": 174,
|
||||||
|
"type": "CallExpression",
|
||||||
|
"type": "CallExpression"
|
||||||
|
},
|
||||||
|
"start": 165,
|
||||||
|
"type": "VariableDeclarator"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"end": 258,
|
||||||
|
"kind": "const",
|
||||||
|
"start": 165,
|
||||||
|
"type": "VariableDeclaration",
|
||||||
|
"type": "VariableDeclaration"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"declarations": [
|
||||||
|
{
|
||||||
|
"end": 407,
|
||||||
|
"id": {
|
||||||
|
"end": 266,
|
||||||
|
"name": "pattn2",
|
||||||
|
"start": 260,
|
||||||
|
"type": "Identifier"
|
||||||
|
},
|
||||||
|
"init": {
|
||||||
|
"arguments": [
|
||||||
|
{
|
||||||
|
"end": 398,
|
||||||
|
"properties": [
|
||||||
|
{
|
||||||
|
"end": 306,
|
||||||
|
"key": {
|
||||||
|
"end": 295,
|
||||||
|
"name": "axis",
|
||||||
|
"start": 291,
|
||||||
|
"type": "Identifier"
|
||||||
|
},
|
||||||
|
"start": 291,
|
||||||
|
"type": "ObjectProperty",
|
||||||
|
"value": {
|
||||||
|
"elements": [
|
||||||
|
{
|
||||||
|
"end": 299,
|
||||||
|
"raw": "0",
|
||||||
|
"start": 298,
|
||||||
|
"type": "Literal",
|
||||||
|
"type": "Literal",
|
||||||
|
"value": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"end": 302,
|
||||||
|
"raw": "0",
|
||||||
|
"start": 301,
|
||||||
|
"type": "Literal",
|
||||||
|
"type": "Literal",
|
||||||
|
"value": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"end": 305,
|
||||||
|
"raw": "1",
|
||||||
|
"start": 304,
|
||||||
|
"type": "Literal",
|
||||||
|
"type": "Literal",
|
||||||
|
"value": 1
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"end": 306,
|
||||||
|
"start": 297,
|
||||||
|
"type": "ArrayExpression",
|
||||||
|
"type": "ArrayExpression"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"end": 333,
|
||||||
|
"key": {
|
||||||
|
"end": 316,
|
||||||
|
"name": "center",
|
||||||
|
"start": 310,
|
||||||
|
"type": "Identifier"
|
||||||
|
},
|
||||||
|
"start": 310,
|
||||||
|
"type": "ObjectProperty",
|
||||||
|
"value": {
|
||||||
|
"elements": [
|
||||||
|
{
|
||||||
|
"argument": {
|
||||||
|
"end": 322,
|
||||||
|
"raw": "20",
|
||||||
|
"start": 320,
|
||||||
|
"type": "Literal",
|
||||||
|
"type": "Literal",
|
||||||
|
"value": 20
|
||||||
|
},
|
||||||
|
"end": 322,
|
||||||
|
"operator": "-",
|
||||||
|
"start": 319,
|
||||||
|
"type": "UnaryExpression",
|
||||||
|
"type": "UnaryExpression"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"argument": {
|
||||||
|
"end": 327,
|
||||||
|
"raw": "20",
|
||||||
|
"start": 325,
|
||||||
|
"type": "Literal",
|
||||||
|
"type": "Literal",
|
||||||
|
"value": 20
|
||||||
|
},
|
||||||
|
"end": 327,
|
||||||
|
"operator": "-",
|
||||||
|
"start": 324,
|
||||||
|
"type": "UnaryExpression",
|
||||||
|
"type": "UnaryExpression"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"argument": {
|
||||||
|
"end": 332,
|
||||||
|
"raw": "20",
|
||||||
|
"start": 330,
|
||||||
|
"type": "Literal",
|
||||||
|
"type": "Literal",
|
||||||
|
"value": 20
|
||||||
|
},
|
||||||
|
"end": 332,
|
||||||
|
"operator": "-",
|
||||||
|
"start": 329,
|
||||||
|
"type": "UnaryExpression",
|
||||||
|
"type": "UnaryExpression"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"end": 333,
|
||||||
|
"start": 318,
|
||||||
|
"type": "ArrayExpression",
|
||||||
|
"type": "ArrayExpression"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"end": 350,
|
||||||
|
"key": {
|
||||||
|
"end": 346,
|
||||||
|
"name": "instances",
|
||||||
|
"start": 337,
|
||||||
|
"type": "Identifier"
|
||||||
|
},
|
||||||
|
"start": 337,
|
||||||
|
"type": "ObjectProperty",
|
||||||
|
"value": {
|
||||||
|
"end": 350,
|
||||||
|
"raw": "41",
|
||||||
|
"start": 348,
|
||||||
|
"type": "Literal",
|
||||||
|
"type": "Literal",
|
||||||
|
"value": 41
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"end": 369,
|
||||||
|
"key": {
|
||||||
|
"end": 364,
|
||||||
|
"name": "arcDegrees",
|
||||||
|
"start": 354,
|
||||||
|
"type": "Identifier"
|
||||||
|
},
|
||||||
|
"start": 354,
|
||||||
|
"type": "ObjectProperty",
|
||||||
|
"value": {
|
||||||
|
"end": 369,
|
||||||
|
"raw": "360",
|
||||||
|
"start": 366,
|
||||||
|
"type": "Literal",
|
||||||
|
"type": "Literal",
|
||||||
|
"value": 360
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"end": 396,
|
||||||
|
"key": {
|
||||||
|
"end": 389,
|
||||||
|
"name": "rotateDuplicates",
|
||||||
|
"start": 373,
|
||||||
|
"type": "Identifier"
|
||||||
|
},
|
||||||
|
"start": 373,
|
||||||
|
"type": "ObjectProperty",
|
||||||
|
"value": {
|
||||||
|
"end": 396,
|
||||||
|
"raw": "false",
|
||||||
|
"start": 391,
|
||||||
|
"type": "Literal",
|
||||||
|
"type": "Literal",
|
||||||
|
"value": false
|
||||||
|
}
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"start": 287,
|
||||||
|
"type": "ObjectExpression",
|
||||||
|
"type": "ObjectExpression"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"end": 406,
|
||||||
|
"name": "pattn1",
|
||||||
|
"start": 400,
|
||||||
|
"type": "Identifier",
|
||||||
|
"type": "Identifier"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"callee": {
|
||||||
|
"end": 286,
|
||||||
|
"name": "patternCircular3d",
|
||||||
|
"start": 269,
|
||||||
|
"type": "Identifier"
|
||||||
|
},
|
||||||
|
"end": 407,
|
||||||
|
"optional": false,
|
||||||
|
"start": 269,
|
||||||
|
"type": "CallExpression",
|
||||||
|
"type": "CallExpression"
|
||||||
|
},
|
||||||
|
"start": 260,
|
||||||
|
"type": "VariableDeclarator"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"end": 407,
|
||||||
|
"kind": "const",
|
||||||
|
"start": 260,
|
||||||
|
"type": "VariableDeclaration",
|
||||||
|
"type": "VariableDeclaration"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"end": 408,
|
||||||
|
"nonCodeMeta": {
|
||||||
|
"nonCodeNodes": {
|
||||||
|
"0": [
|
||||||
|
{
|
||||||
|
"end": 165,
|
||||||
|
"start": 163,
|
||||||
|
"type": "NonCodeNode",
|
||||||
|
"value": {
|
||||||
|
"type": "newLine"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"1": [
|
||||||
|
{
|
||||||
|
"end": 260,
|
||||||
|
"start": 258,
|
||||||
|
"type": "NonCodeNode",
|
||||||
|
"value": {
|
||||||
|
"type": "newLine"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"startNodes": []
|
||||||
|
},
|
||||||
|
"start": 0
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -0,0 +1,21 @@
|
|||||||
|
exampleSketch = startSketchOn('XZ')
|
||||||
|
|> startProfileAt([0, 0], %)
|
||||||
|
|> line([0, 2], %)
|
||||||
|
|> line([3, 1], %)
|
||||||
|
|> line([0, -4], %)
|
||||||
|
|> close(%)
|
||||||
|
|> extrude(1, %)
|
||||||
|
|
||||||
|
pattn1 = patternLinear3d({
|
||||||
|
axis: [1, 0, 0],
|
||||||
|
instances: 7,
|
||||||
|
distance: 6
|
||||||
|
}, exampleSketch)
|
||||||
|
|
||||||
|
pattn2 = patternCircular3d({
|
||||||
|
axis: [0, 0, 1],
|
||||||
|
center: [-20, -20, -20],
|
||||||
|
instances: 41,
|
||||||
|
arcDegrees: 360,
|
||||||
|
rotateDuplicates: false
|
||||||
|
}, pattn1)
|
||||||
59637
src/wasm-lib/kcl/tests/circular_pattern3d_a_pattern/program_memory.snap
Normal file
|
After Width: | Height: | Size: 127 KiB |
1137
src/wasm-lib/kcl/tests/circular_pattern3d_a_pattern/tokens.snap
Normal file
80
src/wasm-lib/kcl/tests/comparisons_multiple/ast.snap
Normal file
@ -0,0 +1,80 @@
|
|||||||
|
---
|
||||||
|
source: kcl/src/simulation_tests.rs
|
||||||
|
description: Result of parsing comparisons_multiple.kcl
|
||||||
|
snapshot_kind: text
|
||||||
|
---
|
||||||
|
{
|
||||||
|
"Ok": {
|
||||||
|
"body": [
|
||||||
|
{
|
||||||
|
"end": 46,
|
||||||
|
"expression": {
|
||||||
|
"arguments": [
|
||||||
|
{
|
||||||
|
"end": 18,
|
||||||
|
"left": {
|
||||||
|
"end": 13,
|
||||||
|
"left": {
|
||||||
|
"end": 8,
|
||||||
|
"raw": "3",
|
||||||
|
"start": 7,
|
||||||
|
"type": "Literal",
|
||||||
|
"type": "Literal",
|
||||||
|
"value": 3
|
||||||
|
},
|
||||||
|
"operator": "==",
|
||||||
|
"right": {
|
||||||
|
"end": 13,
|
||||||
|
"raw": "3",
|
||||||
|
"start": 12,
|
||||||
|
"type": "Literal",
|
||||||
|
"type": "Literal",
|
||||||
|
"value": 3
|
||||||
|
},
|
||||||
|
"start": 7,
|
||||||
|
"type": "BinaryExpression",
|
||||||
|
"type": "BinaryExpression"
|
||||||
|
},
|
||||||
|
"operator": "==",
|
||||||
|
"right": {
|
||||||
|
"end": 18,
|
||||||
|
"raw": "3",
|
||||||
|
"start": 17,
|
||||||
|
"type": "Literal",
|
||||||
|
"type": "Literal",
|
||||||
|
"value": 3
|
||||||
|
},
|
||||||
|
"start": 7,
|
||||||
|
"type": "BinaryExpression",
|
||||||
|
"type": "BinaryExpression"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"end": 45,
|
||||||
|
"raw": "\"this should not compile\"",
|
||||||
|
"start": 20,
|
||||||
|
"type": "Literal",
|
||||||
|
"type": "Literal",
|
||||||
|
"value": "this should not compile"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"callee": {
|
||||||
|
"end": 6,
|
||||||
|
"name": "assert",
|
||||||
|
"start": 0,
|
||||||
|
"type": "Identifier"
|
||||||
|
},
|
||||||
|
"end": 46,
|
||||||
|
"optional": false,
|
||||||
|
"start": 0,
|
||||||
|
"type": "CallExpression",
|
||||||
|
"type": "CallExpression"
|
||||||
|
},
|
||||||
|
"start": 0,
|
||||||
|
"type": "ExpressionStatement",
|
||||||
|
"type": "ExpressionStatement"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"end": 47,
|
||||||
|
"start": 0
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -0,0 +1,6 @@
|
|||||||
|
---
|
||||||
|
source: kcl/src/simulation_tests.rs
|
||||||
|
description: Error from executing comparisons_multiple.kcl
|
||||||
|
snapshot_kind: text
|
||||||
|
---
|
||||||
|
semantic: KclErrorDetails { source_ranges: [SourceRange([7, 13, 0])], message: "Expected a number, but found a boolean (true/false value)" }
|
||||||
1
src/wasm-lib/kcl/tests/comparisons_multiple/input.kcl
Normal file
@ -0,0 +1 @@
|
|||||||
|
assert(3 == 3 == 3, "this should not compile")
|
||||||
105
src/wasm-lib/kcl/tests/comparisons_multiple/tokens.snap
Normal file
@ -0,0 +1,105 @@
|
|||||||
|
---
|
||||||
|
source: kcl/src/simulation_tests.rs
|
||||||
|
description: Result of tokenizing comparisons_multiple.kcl
|
||||||
|
snapshot_kind: text
|
||||||
|
---
|
||||||
|
{
|
||||||
|
"Ok": [
|
||||||
|
{
|
||||||
|
"type": "word",
|
||||||
|
"start": 0,
|
||||||
|
"end": 6,
|
||||||
|
"value": "assert"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "brace",
|
||||||
|
"start": 6,
|
||||||
|
"end": 7,
|
||||||
|
"value": "("
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "number",
|
||||||
|
"start": 7,
|
||||||
|
"end": 8,
|
||||||
|
"value": "3"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "whitespace",
|
||||||
|
"start": 8,
|
||||||
|
"end": 9,
|
||||||
|
"value": " "
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "operator",
|
||||||
|
"start": 9,
|
||||||
|
"end": 11,
|
||||||
|
"value": "=="
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "whitespace",
|
||||||
|
"start": 11,
|
||||||
|
"end": 12,
|
||||||
|
"value": " "
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "number",
|
||||||
|
"start": 12,
|
||||||
|
"end": 13,
|
||||||
|
"value": "3"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "whitespace",
|
||||||
|
"start": 13,
|
||||||
|
"end": 14,
|
||||||
|
"value": " "
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "operator",
|
||||||
|
"start": 14,
|
||||||
|
"end": 16,
|
||||||
|
"value": "=="
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "whitespace",
|
||||||
|
"start": 16,
|
||||||
|
"end": 17,
|
||||||
|
"value": " "
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "number",
|
||||||
|
"start": 17,
|
||||||
|
"end": 18,
|
||||||
|
"value": "3"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "comma",
|
||||||
|
"start": 18,
|
||||||
|
"end": 19,
|
||||||
|
"value": ","
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "whitespace",
|
||||||
|
"start": 19,
|
||||||
|
"end": 20,
|
||||||
|
"value": " "
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "string",
|
||||||
|
"start": 20,
|
||||||
|
"end": 45,
|
||||||
|
"value": "\"this should not compile\""
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "brace",
|
||||||
|
"start": 45,
|
||||||
|
"end": 46,
|
||||||
|
"value": ")"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "whitespace",
|
||||||
|
"start": 46,
|
||||||
|
"end": 47,
|
||||||
|
"value": "\n"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
435
src/wasm-lib/kcl/tests/computed_var/ast.snap
Normal file
@ -0,0 +1,435 @@
|
|||||||
|
---
|
||||||
|
source: kcl/src/simulation_tests.rs
|
||||||
|
description: Result of parsing computed_var.kcl
|
||||||
|
snapshot_kind: text
|
||||||
|
---
|
||||||
|
{
|
||||||
|
"Ok": {
|
||||||
|
"body": [
|
||||||
|
{
|
||||||
|
"declarations": [
|
||||||
|
{
|
||||||
|
"end": 56,
|
||||||
|
"id": {
|
||||||
|
"end": 40,
|
||||||
|
"name": "arr",
|
||||||
|
"start": 37,
|
||||||
|
"type": "Identifier"
|
||||||
|
},
|
||||||
|
"init": {
|
||||||
|
"elements": [
|
||||||
|
{
|
||||||
|
"end": 45,
|
||||||
|
"raw": "0",
|
||||||
|
"start": 44,
|
||||||
|
"type": "Literal",
|
||||||
|
"type": "Literal",
|
||||||
|
"value": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"end": 48,
|
||||||
|
"raw": "0",
|
||||||
|
"start": 47,
|
||||||
|
"type": "Literal",
|
||||||
|
"type": "Literal",
|
||||||
|
"value": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"end": 51,
|
||||||
|
"raw": "0",
|
||||||
|
"start": 50,
|
||||||
|
"type": "Literal",
|
||||||
|
"type": "Literal",
|
||||||
|
"value": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"end": 55,
|
||||||
|
"raw": "10",
|
||||||
|
"start": 53,
|
||||||
|
"type": "Literal",
|
||||||
|
"type": "Literal",
|
||||||
|
"value": 10
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"end": 56,
|
||||||
|
"start": 43,
|
||||||
|
"type": "ArrayExpression",
|
||||||
|
"type": "ArrayExpression"
|
||||||
|
},
|
||||||
|
"start": 37,
|
||||||
|
"type": "VariableDeclarator"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"end": 56,
|
||||||
|
"kind": "const",
|
||||||
|
"start": 37,
|
||||||
|
"type": "VariableDeclaration",
|
||||||
|
"type": "VariableDeclaration"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"declarations": [
|
||||||
|
{
|
||||||
|
"end": 62,
|
||||||
|
"id": {
|
||||||
|
"end": 58,
|
||||||
|
"name": "i",
|
||||||
|
"start": 57,
|
||||||
|
"type": "Identifier"
|
||||||
|
},
|
||||||
|
"init": {
|
||||||
|
"end": 62,
|
||||||
|
"raw": "3",
|
||||||
|
"start": 61,
|
||||||
|
"type": "Literal",
|
||||||
|
"type": "Literal",
|
||||||
|
"value": 3
|
||||||
|
},
|
||||||
|
"start": 57,
|
||||||
|
"type": "VariableDeclarator"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"end": 62,
|
||||||
|
"kind": "const",
|
||||||
|
"start": 57,
|
||||||
|
"type": "VariableDeclaration",
|
||||||
|
"type": "VariableDeclaration"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"declarations": [
|
||||||
|
{
|
||||||
|
"end": 75,
|
||||||
|
"id": {
|
||||||
|
"end": 66,
|
||||||
|
"name": "ten",
|
||||||
|
"start": 63,
|
||||||
|
"type": "Identifier"
|
||||||
|
},
|
||||||
|
"init": {
|
||||||
|
"computed": true,
|
||||||
|
"end": 75,
|
||||||
|
"object": {
|
||||||
|
"end": 72,
|
||||||
|
"name": "arr",
|
||||||
|
"start": 69,
|
||||||
|
"type": "Identifier",
|
||||||
|
"type": "Identifier"
|
||||||
|
},
|
||||||
|
"property": {
|
||||||
|
"end": 74,
|
||||||
|
"name": "i",
|
||||||
|
"start": 73,
|
||||||
|
"type": "Identifier",
|
||||||
|
"type": "Identifier"
|
||||||
|
},
|
||||||
|
"start": 69,
|
||||||
|
"type": "MemberExpression",
|
||||||
|
"type": "MemberExpression"
|
||||||
|
},
|
||||||
|
"start": 63,
|
||||||
|
"type": "VariableDeclarator"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"end": 75,
|
||||||
|
"kind": "const",
|
||||||
|
"start": 63,
|
||||||
|
"type": "VariableDeclaration",
|
||||||
|
"type": "VariableDeclaration"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"end": 115,
|
||||||
|
"expression": {
|
||||||
|
"arguments": [
|
||||||
|
{
|
||||||
|
"end": 92,
|
||||||
|
"name": "ten",
|
||||||
|
"start": 89,
|
||||||
|
"type": "Identifier",
|
||||||
|
"type": "Identifier"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"end": 96,
|
||||||
|
"raw": "10",
|
||||||
|
"start": 94,
|
||||||
|
"type": "Literal",
|
||||||
|
"type": "Literal",
|
||||||
|
"value": 10
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"end": 106,
|
||||||
|
"raw": "0.000001",
|
||||||
|
"start": 98,
|
||||||
|
"type": "Literal",
|
||||||
|
"type": "Literal",
|
||||||
|
"value": 0.000001
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"end": 114,
|
||||||
|
"raw": "\"oops\"",
|
||||||
|
"start": 108,
|
||||||
|
"type": "Literal",
|
||||||
|
"type": "Literal",
|
||||||
|
"value": "oops"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"callee": {
|
||||||
|
"end": 88,
|
||||||
|
"name": "assertEqual",
|
||||||
|
"start": 77,
|
||||||
|
"type": "Identifier"
|
||||||
|
},
|
||||||
|
"end": 115,
|
||||||
|
"optional": false,
|
||||||
|
"start": 77,
|
||||||
|
"type": "CallExpression",
|
||||||
|
"type": "CallExpression"
|
||||||
|
},
|
||||||
|
"start": 77,
|
||||||
|
"type": "ExpressionStatement",
|
||||||
|
"type": "ExpressionStatement"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"declarations": [
|
||||||
|
{
|
||||||
|
"end": 126,
|
||||||
|
"id": {
|
||||||
|
"end": 118,
|
||||||
|
"name": "p",
|
||||||
|
"start": 117,
|
||||||
|
"type": "Identifier"
|
||||||
|
},
|
||||||
|
"init": {
|
||||||
|
"end": 126,
|
||||||
|
"raw": "\"foo\"",
|
||||||
|
"start": 121,
|
||||||
|
"type": "Literal",
|
||||||
|
"type": "Literal",
|
||||||
|
"value": "foo"
|
||||||
|
},
|
||||||
|
"start": 117,
|
||||||
|
"type": "VariableDeclarator"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"end": 126,
|
||||||
|
"kind": "const",
|
||||||
|
"start": 117,
|
||||||
|
"type": "VariableDeclaration",
|
||||||
|
"type": "VariableDeclaration"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"declarations": [
|
||||||
|
{
|
||||||
|
"end": 151,
|
||||||
|
"id": {
|
||||||
|
"end": 130,
|
||||||
|
"name": "obj",
|
||||||
|
"start": 127,
|
||||||
|
"type": "Identifier"
|
||||||
|
},
|
||||||
|
"init": {
|
||||||
|
"end": 151,
|
||||||
|
"properties": [
|
||||||
|
{
|
||||||
|
"end": 141,
|
||||||
|
"key": {
|
||||||
|
"end": 138,
|
||||||
|
"name": "foo",
|
||||||
|
"start": 135,
|
||||||
|
"type": "Identifier"
|
||||||
|
},
|
||||||
|
"start": 135,
|
||||||
|
"type": "ObjectProperty",
|
||||||
|
"value": {
|
||||||
|
"end": 141,
|
||||||
|
"raw": "1",
|
||||||
|
"start": 140,
|
||||||
|
"type": "Literal",
|
||||||
|
"type": "Literal",
|
||||||
|
"value": 1
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"end": 149,
|
||||||
|
"key": {
|
||||||
|
"end": 146,
|
||||||
|
"name": "bar",
|
||||||
|
"start": 143,
|
||||||
|
"type": "Identifier"
|
||||||
|
},
|
||||||
|
"start": 143,
|
||||||
|
"type": "ObjectProperty",
|
||||||
|
"value": {
|
||||||
|
"end": 149,
|
||||||
|
"raw": "0",
|
||||||
|
"start": 148,
|
||||||
|
"type": "Literal",
|
||||||
|
"type": "Literal",
|
||||||
|
"value": 0
|
||||||
|
}
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"start": 133,
|
||||||
|
"type": "ObjectExpression",
|
||||||
|
"type": "ObjectExpression"
|
||||||
|
},
|
||||||
|
"start": 127,
|
||||||
|
"type": "VariableDeclarator"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"end": 151,
|
||||||
|
"kind": "const",
|
||||||
|
"start": 127,
|
||||||
|
"type": "VariableDeclaration",
|
||||||
|
"type": "VariableDeclaration"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"declarations": [
|
||||||
|
{
|
||||||
|
"end": 164,
|
||||||
|
"id": {
|
||||||
|
"end": 155,
|
||||||
|
"name": "one",
|
||||||
|
"start": 152,
|
||||||
|
"type": "Identifier"
|
||||||
|
},
|
||||||
|
"init": {
|
||||||
|
"computed": true,
|
||||||
|
"end": 164,
|
||||||
|
"object": {
|
||||||
|
"end": 161,
|
||||||
|
"name": "obj",
|
||||||
|
"start": 158,
|
||||||
|
"type": "Identifier",
|
||||||
|
"type": "Identifier"
|
||||||
|
},
|
||||||
|
"property": {
|
||||||
|
"end": 163,
|
||||||
|
"name": "p",
|
||||||
|
"start": 162,
|
||||||
|
"type": "Identifier",
|
||||||
|
"type": "Identifier"
|
||||||
|
},
|
||||||
|
"start": 158,
|
||||||
|
"type": "MemberExpression",
|
||||||
|
"type": "MemberExpression"
|
||||||
|
},
|
||||||
|
"start": 152,
|
||||||
|
"type": "VariableDeclarator"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"end": 164,
|
||||||
|
"kind": "const",
|
||||||
|
"start": 152,
|
||||||
|
"type": "VariableDeclaration",
|
||||||
|
"type": "VariableDeclaration"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"end": 204,
|
||||||
|
"expression": {
|
||||||
|
"arguments": [
|
||||||
|
{
|
||||||
|
"end": 181,
|
||||||
|
"name": "one",
|
||||||
|
"start": 178,
|
||||||
|
"type": "Identifier",
|
||||||
|
"type": "Identifier"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"end": 184,
|
||||||
|
"raw": "1",
|
||||||
|
"start": 183,
|
||||||
|
"type": "Literal",
|
||||||
|
"type": "Literal",
|
||||||
|
"value": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"end": 195,
|
||||||
|
"raw": "0.0000001",
|
||||||
|
"start": 186,
|
||||||
|
"type": "Literal",
|
||||||
|
"type": "Literal",
|
||||||
|
"value": 0.0000001
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"end": 203,
|
||||||
|
"raw": "\"oops\"",
|
||||||
|
"start": 197,
|
||||||
|
"type": "Literal",
|
||||||
|
"type": "Literal",
|
||||||
|
"value": "oops"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"callee": {
|
||||||
|
"end": 177,
|
||||||
|
"name": "assertEqual",
|
||||||
|
"start": 166,
|
||||||
|
"type": "Identifier"
|
||||||
|
},
|
||||||
|
"end": 204,
|
||||||
|
"optional": false,
|
||||||
|
"start": 166,
|
||||||
|
"type": "CallExpression",
|
||||||
|
"type": "CallExpression"
|
||||||
|
},
|
||||||
|
"start": 166,
|
||||||
|
"type": "ExpressionStatement",
|
||||||
|
"type": "ExpressionStatement"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"end": 205,
|
||||||
|
"nonCodeMeta": {
|
||||||
|
"nonCodeNodes": {
|
||||||
|
"2": [
|
||||||
|
{
|
||||||
|
"end": 77,
|
||||||
|
"start": 75,
|
||||||
|
"type": "NonCodeNode",
|
||||||
|
"value": {
|
||||||
|
"type": "newLine"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"3": [
|
||||||
|
{
|
||||||
|
"end": 117,
|
||||||
|
"start": 115,
|
||||||
|
"type": "NonCodeNode",
|
||||||
|
"value": {
|
||||||
|
"type": "newLine"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"6": [
|
||||||
|
{
|
||||||
|
"end": 166,
|
||||||
|
"start": 164,
|
||||||
|
"type": "NonCodeNode",
|
||||||
|
"value": {
|
||||||
|
"type": "newLine"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"startNodes": [
|
||||||
|
{
|
||||||
|
"end": 34,
|
||||||
|
"start": 0,
|
||||||
|
"type": "NonCodeNode",
|
||||||
|
"value": {
|
||||||
|
"type": "blockComment",
|
||||||
|
"value": "This tests computed properties.",
|
||||||
|
"style": "line"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"end": 37,
|
||||||
|
"start": 34,
|
||||||
|
"type": "NonCodeNode",
|
||||||
|
"value": {
|
||||||
|
"type": "newLine"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"start": 0
|
||||||
|
}
|
||||||
|
}
|
||||||
14
src/wasm-lib/kcl/tests/computed_var/input.kcl
Normal file
@ -0,0 +1,14 @@
|
|||||||
|
// This tests computed properties.
|
||||||
|
|
||||||
|
|
||||||
|
arr = [0, 0, 0, 10]
|
||||||
|
i = 3
|
||||||
|
ten = arr[i]
|
||||||
|
|
||||||
|
assertEqual(ten, 10, 0.000001, "oops")
|
||||||
|
|
||||||
|
p = "foo"
|
||||||
|
obj = { foo: 1, bar: 0 }
|
||||||
|
one = obj[p]
|
||||||
|
|
||||||
|
assertEqual(one, 1, 0.0000001, "oops")
|
||||||