Move tests from no_visuals into simulation tests (#4367)
Now you can properly inspect program memory for the no_visuals tests, instead of relying on a lot of KCL asserts.
This commit is contained in:
@ -4,9 +4,9 @@ set -euo pipefail
|
|||||||
if [[ ! -f "test-results/.last-run.json" ]]; then
|
if [[ ! -f "test-results/.last-run.json" ]]; then
|
||||||
# if no last run artifact, than run plawright normally
|
# if no last run artifact, than run plawright normally
|
||||||
echo "run playwright normally"
|
echo "run playwright normally"
|
||||||
if [[ "$3" == "ubuntu-latest" ]]; then
|
if [[ "$3" == ubuntu-latest* ]]; then
|
||||||
yarn test:playwright:browser:chrome:ubuntu -- --shard=$1/$2 || true
|
yarn test:playwright:browser:chrome:ubuntu -- --shard=$1/$2 || true
|
||||||
elif [[ "$3" == "windows-latest" ]]; then
|
elif [[ "$3" == windows-latest* ]]; then
|
||||||
yarn test:playwright:browser:chrome:windows -- --shard=$1/$2 || true
|
yarn test:playwright:browser:chrome:windows -- --shard=$1/$2 || true
|
||||||
else
|
else
|
||||||
echo "Do not run playwright. Unable to detect os runtime."
|
echo "Do not run playwright. Unable to detect os runtime."
|
||||||
@ -26,9 +26,9 @@ while [[ $retry -le $max_retrys ]]; do
|
|||||||
if [[ $failed_tests -gt 0 ]]; then
|
if [[ $failed_tests -gt 0 ]]; then
|
||||||
echo "retried=true" >>$GITHUB_OUTPUT
|
echo "retried=true" >>$GITHUB_OUTPUT
|
||||||
echo "run playwright with last failed tests and retry $retry"
|
echo "run playwright with last failed tests and retry $retry"
|
||||||
if [[ "$3" == "ubuntu-latest" ]]; then
|
if [[ "$3" == ubuntu-latest* ]]; then
|
||||||
yarn test:playwright:browser:chrome:ubuntu -- --last-failed || true
|
yarn test:playwright:browser:chrome:ubuntu -- --last-failed || true
|
||||||
elif [[ "$3" == "windows-latest" ]]; then
|
elif [[ "$3" == windows-latest* ]]; then
|
||||||
yarn test:playwright:browser:chrome:windows -- --last-failed || true
|
yarn test:playwright:browser:chrome:windows -- --last-failed || true
|
||||||
else
|
else
|
||||||
echo "Do not run playwright. Unable to detect os runtime."
|
echo "Do not run playwright. Unable to detect os runtime."
|
||||||
|
12
.github/ci-cd-scripts/playwright-electron.sh
vendored
12
.github/ci-cd-scripts/playwright-electron.sh
vendored
@ -4,11 +4,11 @@ set -euo pipefail
|
|||||||
if [[ ! -f "test-results/.last-run.json" ]]; then
|
if [[ ! -f "test-results/.last-run.json" ]]; then
|
||||||
# if no last run artifact, than run plawright normally
|
# if no last run artifact, than run plawright normally
|
||||||
echo "run playwright normally"
|
echo "run playwright normally"
|
||||||
if [[ "$1" == "ubuntu-latest" ]]; then
|
if [[ "$1" == ubuntu-latest* ]]; then
|
||||||
xvfb-run --auto-servernum --server-args="-screen 0 1280x960x24" -- yarn test:playwright:electron:ubuntu || true
|
xvfb-run --auto-servernum --server-args="-screen 0 1280x960x24" -- yarn test:playwright:electron:ubuntu || true
|
||||||
elif [[ "$1" == "windows-latest" ]]; then
|
elif [[ "$1" == windows-latest* ]]; then
|
||||||
yarn test:playwright:electron:windows || true
|
yarn test:playwright:electron:windows || true
|
||||||
elif [[ "$1" == "macos-14" ]]; then
|
elif [[ "$1" == macos-14* ]]; then
|
||||||
yarn test:playwright:electron:macos || true
|
yarn test:playwright:electron:macos || true
|
||||||
else
|
else
|
||||||
echo "Do not run playwright. Unable to detect os runtime."
|
echo "Do not run playwright. Unable to detect os runtime."
|
||||||
@ -28,11 +28,11 @@ while [[ $retry -le $max_retrys ]]; do
|
|||||||
if [[ $failed_tests -gt 0 ]]; then
|
if [[ $failed_tests -gt 0 ]]; then
|
||||||
echo "retried=true" >>$GITHUB_OUTPUT
|
echo "retried=true" >>$GITHUB_OUTPUT
|
||||||
echo "run playwright with last failed tests and retry $retry"
|
echo "run playwright with last failed tests and retry $retry"
|
||||||
if [[ "$1" == "ubuntu-latest" ]]; then
|
if [[ "$1" == ubuntu-latest* ]]; then
|
||||||
xvfb-run --auto-servernum --server-args="-screen 0 1280x960x24" -- yarn test:playwright:electron:ubuntu -- --last-failed || true
|
xvfb-run --auto-servernum --server-args="-screen 0 1280x960x24" -- yarn test:playwright:electron:ubuntu -- --last-failed || true
|
||||||
elif [[ "$1" == "windows-latest" ]]; then
|
elif [[ "$1" == windows-latest* ]]; then
|
||||||
yarn test:playwright:electron:windows -- --last-failed || true
|
yarn test:playwright:electron:windows -- --last-failed || true
|
||||||
elif [[ "$1" == "macos-14" ]]; then
|
elif [[ "$1" == macos-14* ]]; then
|
||||||
yarn test:playwright:electron:macos -- --last-failed || true
|
yarn test:playwright:electron:macos -- --last-failed || true
|
||||||
else
|
else
|
||||||
echo "Do not run playwright. Unable to detect os runtime."
|
echo "Do not run playwright. Unable to detect os runtime."
|
||||||
|
6
.github/workflows/e2e-tests.yml
vendored
6
.github/workflows/e2e-tests.yml
vendored
@ -39,7 +39,7 @@ jobs:
|
|||||||
strategy:
|
strategy:
|
||||||
fail-fast: false
|
fail-fast: false
|
||||||
matrix:
|
matrix:
|
||||||
os: [ubuntu-latest, windows-latest]
|
os: [ubuntu-latest-8-cores, windows-latest-8-cores]
|
||||||
shardIndex: [1, 2, 3, 4]
|
shardIndex: [1, 2, 3, 4]
|
||||||
shardTotal: [4]
|
shardTotal: [4]
|
||||||
runs-on: ${{ matrix.os }}
|
runs-on: ${{ matrix.os }}
|
||||||
@ -227,7 +227,7 @@ jobs:
|
|||||||
strategy:
|
strategy:
|
||||||
fail-fast: false
|
fail-fast: false
|
||||||
matrix:
|
matrix:
|
||||||
os: [ubuntu-latest, windows-latest, macos-14]
|
os: [ubuntu-latest-8-cores, windows-latest-8-cores, macos-14-large]
|
||||||
timeout-minutes: 60
|
timeout-minutes: 60
|
||||||
runs-on: ${{ matrix.os }}
|
runs-on: ${{ matrix.os }}
|
||||||
needs: check-rust-changes
|
needs: check-rust-changes
|
||||||
@ -287,7 +287,7 @@ jobs:
|
|||||||
brew install gnu-sed
|
brew install gnu-sed
|
||||||
echo "/opt/homebrew/opt/gnu-sed/libexec/gnubin" >> $GITHUB_PATH
|
echo "/opt/homebrew/opt/gnu-sed/libexec/gnubin" >> $GITHUB_PATH
|
||||||
- name: Install vector
|
- name: Install vector
|
||||||
if: ${{ !startsWith(matrix.os, 'windows') }}
|
if: ${{ startsWith(matrix.os, 'ubuntu') }}
|
||||||
shell: bash
|
shell: bash
|
||||||
run: |
|
run: |
|
||||||
curl --proto '=https' --tlsv1.2 -sSfL https://sh.vector.dev > /tmp/vector.sh
|
curl --proto '=https' --tlsv1.2 -sSfL https://sh.vector.dev > /tmp/vector.sh
|
||||||
|
@ -985,7 +985,7 @@ test.describe('Editor tests', () => {
|
|||||||
|> extrude(5, %)`)
|
|> extrude(5, %)`)
|
||||||
})
|
})
|
||||||
|
|
||||||
test(
|
test.fixme(
|
||||||
`Can use the import stdlib function on a local OBJ file`,
|
`Can use the import stdlib function on a local OBJ file`,
|
||||||
{ tag: '@electron' },
|
{ tag: '@electron' },
|
||||||
async ({ browserName }, testInfo) => {
|
async ({ browserName }, testInfo) => {
|
||||||
|
@ -109,7 +109,7 @@ test.describe('when using the file tree to', () => {
|
|||||||
const fromFile = 'main.kcl'
|
const fromFile = 'main.kcl'
|
||||||
const toFile = 'hello.kcl'
|
const toFile = 'hello.kcl'
|
||||||
|
|
||||||
test(
|
test.fixme(
|
||||||
`rename ${fromFile} to ${toFile}, and doesn't crash on reload and settings load`,
|
`rename ${fromFile} to ${toFile}, and doesn't crash on reload and settings load`,
|
||||||
{ tag: '@electron' },
|
{ tag: '@electron' },
|
||||||
async ({ browser: _, tronApp }, testInfo) => {
|
async ({ browser: _, tronApp }, testInfo) => {
|
||||||
@ -157,7 +157,7 @@ test.describe('when using the file tree to', () => {
|
|||||||
}
|
}
|
||||||
)
|
)
|
||||||
|
|
||||||
test(
|
test.fixme(
|
||||||
`create many new untitled files they increment their names`,
|
`create many new untitled files they increment their names`,
|
||||||
{ tag: '@electron' },
|
{ tag: '@electron' },
|
||||||
async ({ browser: _, tronApp }, testInfo) => {
|
async ({ browser: _, tronApp }, testInfo) => {
|
||||||
@ -298,7 +298,7 @@ test.describe('when using the file tree to', () => {
|
|||||||
}
|
}
|
||||||
)
|
)
|
||||||
|
|
||||||
test(
|
test.fixme(
|
||||||
'loading small file, then large, then back to small',
|
'loading small file, then large, then back to small',
|
||||||
{
|
{
|
||||||
tag: '@electron',
|
tag: '@electron',
|
||||||
|
@ -854,7 +854,7 @@ test(
|
|||||||
}
|
}
|
||||||
)
|
)
|
||||||
|
|
||||||
test(
|
test.fixme(
|
||||||
'Deleting projects, can delete individual project, can still create projects after deleting all',
|
'Deleting projects, can delete individual project, can still create projects after deleting all',
|
||||||
{ tag: '@electron' },
|
{ tag: '@electron' },
|
||||||
async ({ browserName }, testInfo) => {
|
async ({ browserName }, testInfo) => {
|
||||||
|
@ -1031,7 +1031,7 @@ test.describe('Grid visibility', { tag: '@snapshot' }, () => {
|
|||||||
})
|
})
|
||||||
})
|
})
|
||||||
|
|
||||||
test('theme persists', async ({ page, context }) => {
|
test.fixme('theme persists', async ({ page, context }) => {
|
||||||
const u = await getUtils(page)
|
const u = await getUtils(page)
|
||||||
await context.addInitScript(async () => {
|
await context.addInitScript(async () => {
|
||||||
localStorage.setItem(
|
localStorage.setItem(
|
||||||
|
@ -415,7 +415,7 @@ test.describe('Testing settings', () => {
|
|||||||
)
|
)
|
||||||
|
|
||||||
// It was much easier to test the logo color than the background stream color.
|
// It was much easier to test the logo color than the background stream color.
|
||||||
test(
|
test.fixme(
|
||||||
'user settings reload on external change, on project and modeling view',
|
'user settings reload on external change, on project and modeling view',
|
||||||
{ tag: '@electron' },
|
{ tag: '@electron' },
|
||||||
async ({ browserName }, testInfo) => {
|
async ({ browserName }, testInfo) => {
|
||||||
|
@ -256,181 +256,186 @@ test('First escape in tool pops you out of tool, second exits sketch mode', asyn
|
|||||||
).not.toBeVisible()
|
).not.toBeVisible()
|
||||||
})
|
})
|
||||||
|
|
||||||
test('Basic default modeling and sketch hotkeys work', async ({ page }) => {
|
test.fixme(
|
||||||
const u = await getUtils(page)
|
'Basic default modeling and sketch hotkeys work',
|
||||||
|
async ({ page }) => {
|
||||||
|
const u = await getUtils(page)
|
||||||
|
|
||||||
// This test can run long if it takes a little too long to load
|
// This test can run long if it takes a little too long to load
|
||||||
// the engine.
|
// the engine.
|
||||||
test.setTimeout(90000)
|
test.setTimeout(90000)
|
||||||
// This test has a weird bug on ubuntu
|
// This test has a weird bug on ubuntu
|
||||||
test.skip(
|
// Funny, it's flaking on Windows too :). I think there is just something
|
||||||
process.platform === 'linux',
|
// actually wrong.
|
||||||
'weird playwright bug on ubuntu https://github.com/KittyCAD/modeling-app/issues/2444'
|
test.skip(
|
||||||
)
|
process.platform === 'linux',
|
||||||
// Load the app with the code pane open
|
'weird playwright bug on ubuntu https://github.com/KittyCAD/modeling-app/issues/2444'
|
||||||
|
)
|
||||||
|
// Load the app with the code pane open
|
||||||
|
|
||||||
await test.step(`Set up test`, async () => {
|
await test.step(`Set up test`, async () => {
|
||||||
await page.addInitScript(async () => {
|
await page.addInitScript(async () => {
|
||||||
localStorage.setItem(
|
localStorage.setItem(
|
||||||
'store',
|
'store',
|
||||||
JSON.stringify({
|
JSON.stringify({
|
||||||
state: {
|
state: {
|
||||||
openPanes: ['code'],
|
openPanes: ['code'],
|
||||||
},
|
},
|
||||||
version: 0,
|
version: 0,
|
||||||
|
})
|
||||||
|
)
|
||||||
|
})
|
||||||
|
await page.setViewportSize({ width: 1200, height: 500 })
|
||||||
|
await u.waitForAuthSkipAppStart()
|
||||||
|
await u.openDebugPanel()
|
||||||
|
await u.expectCmdLog('[data-message-type="execution-done"]')
|
||||||
|
await u.closeDebugPanel()
|
||||||
|
})
|
||||||
|
|
||||||
|
const codePane = page.locator('.cm-content')
|
||||||
|
const lineButton = page.getByRole('button', {
|
||||||
|
name: 'line Line',
|
||||||
|
exact: true,
|
||||||
|
})
|
||||||
|
const arcButton = page.getByRole('button', {
|
||||||
|
name: 'arc Tangential Arc',
|
||||||
|
exact: true,
|
||||||
|
})
|
||||||
|
const extrudeButton = page.getByRole('button', { name: 'Extrude' })
|
||||||
|
const commandBarComboBox = page.getByPlaceholder('Search commands')
|
||||||
|
const exitSketchButton = page.getByRole('button', { name: 'Exit Sketch' })
|
||||||
|
|
||||||
|
await test.step(`Type code with modeling hotkeys, shouldn't fire`, async () => {
|
||||||
|
await codePane.click()
|
||||||
|
await page.keyboard.type('//')
|
||||||
|
await page.keyboard.press('s')
|
||||||
|
await expect(commandBarComboBox).not.toBeVisible()
|
||||||
|
await page.keyboard.press('e')
|
||||||
|
await expect(commandBarComboBox).not.toBeVisible()
|
||||||
|
await expect(codePane).toHaveText('//se')
|
||||||
|
})
|
||||||
|
|
||||||
|
// Blur focus from the code editor, use the s command to sketch
|
||||||
|
await test.step(`Blur editor focus, enter sketch`, async () => {
|
||||||
|
/**
|
||||||
|
* TODO: There is a bug somewhere that causes this test to fail
|
||||||
|
* if you toggle the codePane closed before your trigger the
|
||||||
|
* start of the sketch.
|
||||||
|
* and a separate Safari-only bug that causes the test to fail
|
||||||
|
* if the pane is open the entire test. The maintainer of CodeMirror
|
||||||
|
* has pinpointed this to the unusual browser behavior:
|
||||||
|
* https://discuss.codemirror.net/t/how-to-force-unfocus-of-the-codemirror-element-in-safari/8095/3
|
||||||
|
*/
|
||||||
|
await blurCodeEditor()
|
||||||
|
await page.waitForTimeout(1000)
|
||||||
|
await page.keyboard.press('s')
|
||||||
|
await page.waitForTimeout(1000)
|
||||||
|
await page.mouse.move(800, 300, { steps: 5 })
|
||||||
|
await page.mouse.click(800, 300)
|
||||||
|
await page.waitForTimeout(1000)
|
||||||
|
await expect(lineButton).toHaveAttribute('aria-pressed', 'true', {
|
||||||
|
timeout: 15_000,
|
||||||
|
})
|
||||||
|
})
|
||||||
|
|
||||||
|
// Use some sketch hotkeys to create a sketch (l and a for now)
|
||||||
|
await test.step(`Incomplete sketch with hotkeys`, async () => {
|
||||||
|
await test.step(`Draw a line`, async () => {
|
||||||
|
await page.mouse.move(700, 200, { steps: 5 })
|
||||||
|
await page.mouse.click(700, 200)
|
||||||
|
await page.mouse.move(800, 250, { steps: 5 })
|
||||||
|
await page.mouse.click(800, 250)
|
||||||
|
})
|
||||||
|
|
||||||
|
await test.step(`Unequip line tool`, async () => {
|
||||||
|
await page.keyboard.press('l')
|
||||||
|
await expect(lineButton).not.toHaveAttribute('aria-pressed', 'true')
|
||||||
|
})
|
||||||
|
|
||||||
|
await test.step(`Draw a tangential arc`, async () => {
|
||||||
|
await page.keyboard.press('a')
|
||||||
|
await expect(arcButton).toHaveAttribute('aria-pressed', 'true', {
|
||||||
|
timeout: 10_000,
|
||||||
})
|
})
|
||||||
)
|
await page.mouse.move(1000, 100, { steps: 5 })
|
||||||
|
await page.mouse.click(1000, 100)
|
||||||
|
})
|
||||||
|
|
||||||
|
await test.step(`Unequip with escape, equip line tool`, async () => {
|
||||||
|
await page.keyboard.press('Escape')
|
||||||
|
await page.keyboard.press('l')
|
||||||
|
await page.waitForTimeout(50)
|
||||||
|
await expect(lineButton).toHaveAttribute('aria-pressed', 'true')
|
||||||
|
})
|
||||||
})
|
})
|
||||||
await page.setViewportSize({ width: 1200, height: 500 })
|
|
||||||
await u.waitForAuthSkipAppStart()
|
|
||||||
await u.openDebugPanel()
|
|
||||||
await u.expectCmdLog('[data-message-type="execution-done"]')
|
|
||||||
await u.closeDebugPanel()
|
|
||||||
})
|
|
||||||
|
|
||||||
const codePane = page.locator('.cm-content')
|
await test.step(`Type code with sketch hotkeys, shouldn't fire`, async () => {
|
||||||
const lineButton = page.getByRole('button', {
|
// Since there's code now, we have to get to the end of the line
|
||||||
name: 'line Line',
|
await page.locator('.cm-line').last().click()
|
||||||
exact: true,
|
await page.keyboard.down('ControlOrMeta')
|
||||||
})
|
await page.keyboard.press('ArrowRight')
|
||||||
const arcButton = page.getByRole('button', {
|
await page.keyboard.up('ControlOrMeta')
|
||||||
name: 'arc Tangential Arc',
|
|
||||||
exact: true,
|
|
||||||
})
|
|
||||||
const extrudeButton = page.getByRole('button', { name: 'Extrude' })
|
|
||||||
const commandBarComboBox = page.getByPlaceholder('Search commands')
|
|
||||||
const exitSketchButton = page.getByRole('button', { name: 'Exit Sketch' })
|
|
||||||
|
|
||||||
await test.step(`Type code with modeling hotkeys, shouldn't fire`, async () => {
|
await page.keyboard.press('Enter')
|
||||||
await codePane.click()
|
await page.keyboard.type('//')
|
||||||
await page.keyboard.type('//')
|
await page.keyboard.press('l')
|
||||||
await page.keyboard.press('s')
|
await expect(lineButton).toHaveAttribute('aria-pressed', 'true')
|
||||||
await expect(commandBarComboBox).not.toBeVisible()
|
await page.keyboard.press('a')
|
||||||
await page.keyboard.press('e')
|
await expect(lineButton).toHaveAttribute('aria-pressed', 'true')
|
||||||
await expect(commandBarComboBox).not.toBeVisible()
|
await expect(codePane).toContainText('//la')
|
||||||
await expect(codePane).toHaveText('//se')
|
await page.keyboard.press('Backspace')
|
||||||
})
|
await page.keyboard.press('Backspace')
|
||||||
|
await page.keyboard.press('Backspace')
|
||||||
// Blur focus from the code editor, use the s command to sketch
|
await page.keyboard.press('Backspace')
|
||||||
await test.step(`Blur editor focus, enter sketch`, async () => {
|
|
||||||
/**
|
|
||||||
* TODO: There is a bug somewhere that causes this test to fail
|
|
||||||
* if you toggle the codePane closed before your trigger the
|
|
||||||
* start of the sketch.
|
|
||||||
* and a separate Safari-only bug that causes the test to fail
|
|
||||||
* if the pane is open the entire test. The maintainer of CodeMirror
|
|
||||||
* has pinpointed this to the unusual browser behavior:
|
|
||||||
* https://discuss.codemirror.net/t/how-to-force-unfocus-of-the-codemirror-element-in-safari/8095/3
|
|
||||||
*/
|
|
||||||
await blurCodeEditor()
|
|
||||||
await page.waitForTimeout(1000)
|
|
||||||
await page.keyboard.press('s')
|
|
||||||
await page.waitForTimeout(1000)
|
|
||||||
await page.mouse.move(800, 300, { steps: 5 })
|
|
||||||
await page.mouse.click(800, 300)
|
|
||||||
await page.waitForTimeout(1000)
|
|
||||||
await expect(lineButton).toHaveAttribute('aria-pressed', 'true', {
|
|
||||||
timeout: 15_000,
|
|
||||||
})
|
})
|
||||||
})
|
|
||||||
|
|
||||||
// Use some sketch hotkeys to create a sketch (l and a for now)
|
await test.step(`Close profile and exit sketch`, async () => {
|
||||||
await test.step(`Incomplete sketch with hotkeys`, async () => {
|
await blurCodeEditor()
|
||||||
await test.step(`Draw a line`, async () => {
|
|
||||||
await page.mouse.move(700, 200, { steps: 5 })
|
await page.mouse.move(700, 200, { steps: 5 })
|
||||||
await page.mouse.click(700, 200)
|
await page.mouse.click(700, 200)
|
||||||
await page.mouse.move(800, 250, { steps: 5 })
|
// On close it will unequip the line tool.
|
||||||
await page.mouse.click(800, 250)
|
await expect(lineButton).toHaveAttribute('aria-pressed', 'false')
|
||||||
})
|
await expect(exitSketchButton).toBeEnabled()
|
||||||
|
|
||||||
await test.step(`Unequip line tool`, async () => {
|
|
||||||
await page.keyboard.press('l')
|
|
||||||
await expect(lineButton).not.toHaveAttribute('aria-pressed', 'true')
|
|
||||||
})
|
|
||||||
|
|
||||||
await test.step(`Draw a tangential arc`, async () => {
|
|
||||||
await page.keyboard.press('a')
|
|
||||||
await expect(arcButton).toHaveAttribute('aria-pressed', 'true', {
|
|
||||||
timeout: 10_000,
|
|
||||||
})
|
|
||||||
await page.mouse.move(1000, 100, { steps: 5 })
|
|
||||||
await page.mouse.click(1000, 100)
|
|
||||||
})
|
|
||||||
|
|
||||||
await test.step(`Unequip with escape, equip line tool`, async () => {
|
|
||||||
await page.keyboard.press('Escape')
|
await page.keyboard.press('Escape')
|
||||||
await page.keyboard.press('l')
|
await expect(
|
||||||
await page.waitForTimeout(50)
|
page.getByRole('button', { name: 'Exit Sketch' })
|
||||||
await expect(lineButton).toHaveAttribute('aria-pressed', 'true')
|
).not.toBeVisible()
|
||||||
})
|
})
|
||||||
})
|
|
||||||
|
|
||||||
await test.step(`Type code with sketch hotkeys, shouldn't fire`, async () => {
|
// Extrude with e
|
||||||
// Since there's code now, we have to get to the end of the line
|
await test.step(`Extrude the sketch`, async () => {
|
||||||
await page.locator('.cm-line').last().click()
|
await page.mouse.click(750, 150)
|
||||||
await page.keyboard.down('ControlOrMeta')
|
await blurCodeEditor()
|
||||||
await page.keyboard.press('ArrowRight')
|
await expect(extrudeButton).toBeEnabled()
|
||||||
await page.keyboard.up('ControlOrMeta')
|
await page.keyboard.press('e')
|
||||||
|
await page.waitForTimeout(500)
|
||||||
await page.keyboard.press('Enter')
|
await page.mouse.move(800, 200, { steps: 5 })
|
||||||
await page.keyboard.type('//')
|
await page.mouse.click(800, 200)
|
||||||
await page.keyboard.press('l')
|
await expect(page.getByRole('button', { name: 'Continue' })).toBeVisible({
|
||||||
await expect(lineButton).toHaveAttribute('aria-pressed', 'true')
|
timeout: 20_000,
|
||||||
await page.keyboard.press('a')
|
})
|
||||||
await expect(lineButton).toHaveAttribute('aria-pressed', 'true')
|
await page.getByRole('button', { name: 'Continue' }).click()
|
||||||
await expect(codePane).toContainText('//la')
|
await expect(
|
||||||
await page.keyboard.press('Backspace')
|
page.getByRole('button', { name: 'Submit command' })
|
||||||
await page.keyboard.press('Backspace')
|
).toBeVisible()
|
||||||
await page.keyboard.press('Backspace')
|
await page.getByRole('button', { name: 'Submit command' }).click()
|
||||||
await page.keyboard.press('Backspace')
|
await expect(page.locator('.cm-content')).toContainText('extrude(')
|
||||||
})
|
|
||||||
|
|
||||||
await test.step(`Close profile and exit sketch`, async () => {
|
|
||||||
await blurCodeEditor()
|
|
||||||
await page.mouse.move(700, 200, { steps: 5 })
|
|
||||||
await page.mouse.click(700, 200)
|
|
||||||
// On close it will unequip the line tool.
|
|
||||||
await expect(lineButton).toHaveAttribute('aria-pressed', 'false')
|
|
||||||
await expect(exitSketchButton).toBeEnabled()
|
|
||||||
await page.keyboard.press('Escape')
|
|
||||||
await expect(
|
|
||||||
page.getByRole('button', { name: 'Exit Sketch' })
|
|
||||||
).not.toBeVisible()
|
|
||||||
})
|
|
||||||
|
|
||||||
// Extrude with e
|
|
||||||
await test.step(`Extrude the sketch`, async () => {
|
|
||||||
await page.mouse.click(750, 150)
|
|
||||||
await blurCodeEditor()
|
|
||||||
await expect(extrudeButton).toBeEnabled()
|
|
||||||
await page.keyboard.press('e')
|
|
||||||
await page.waitForTimeout(500)
|
|
||||||
await page.mouse.move(800, 200, { steps: 5 })
|
|
||||||
await page.mouse.click(800, 200)
|
|
||||||
await expect(page.getByRole('button', { name: 'Continue' })).toBeVisible({
|
|
||||||
timeout: 20_000,
|
|
||||||
})
|
})
|
||||||
await page.getByRole('button', { name: 'Continue' }).click()
|
|
||||||
await expect(
|
|
||||||
page.getByRole('button', { name: 'Submit command' })
|
|
||||||
).toBeVisible()
|
|
||||||
await page.getByRole('button', { name: 'Submit command' }).click()
|
|
||||||
await expect(page.locator('.cm-content')).toContainText('extrude(')
|
|
||||||
})
|
|
||||||
|
|
||||||
// await codePaneButton.click()
|
// await codePaneButton.click()
|
||||||
// await expect(u.codeLocator).not.toBeVisible()
|
// await expect(u.codeLocator).not.toBeVisible()
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* work-around: to stop `keyboard.press()` from typing in the editor even when it should be blurred
|
* work-around: to stop `keyboard.press()` from typing in the editor even when it should be blurred
|
||||||
*/
|
*/
|
||||||
async function blurCodeEditor() {
|
async function blurCodeEditor() {
|
||||||
await page.getByRole('button', { name: 'Commands' }).click()
|
await page.getByRole('button', { name: 'Commands' }).click()
|
||||||
await page.waitForTimeout(100)
|
await page.waitForTimeout(100)
|
||||||
await page.keyboard.press('Escape')
|
await page.keyboard.press('Escape')
|
||||||
await page.waitForTimeout(100)
|
await page.waitForTimeout(100)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
})
|
)
|
||||||
|
|
||||||
test('Delete key does not navigate back', async ({ page }) => {
|
test('Delete key does not navigate back', async ({ page }) => {
|
||||||
await page.setViewportSize({ width: 1200, height: 500 })
|
await page.setViewportSize({ width: 1200, height: 500 })
|
||||||
|
@ -189,3 +189,246 @@ mod double_map_fn {
|
|||||||
super::execute(TEST_NAME, false).await
|
super::execute(TEST_NAME, false).await
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
mod property_of_object {
|
||||||
|
const TEST_NAME: &str = "property_of_object";
|
||||||
|
|
||||||
|
/// Test tokenizing KCL.
|
||||||
|
#[test]
|
||||||
|
fn tokenize() {
|
||||||
|
super::tokenize(TEST_NAME)
|
||||||
|
}
|
||||||
|
|
||||||
|
/// Test parsing KCL.
|
||||||
|
#[test]
|
||||||
|
fn parse() {
|
||||||
|
super::parse(TEST_NAME)
|
||||||
|
}
|
||||||
|
|
||||||
|
/// Test that parsing and unparsing KCL produces the original KCL input.
|
||||||
|
#[test]
|
||||||
|
fn unparse() {
|
||||||
|
super::unparse(TEST_NAME)
|
||||||
|
}
|
||||||
|
|
||||||
|
/// Test that KCL is executed correctly.
|
||||||
|
#[tokio::test(flavor = "multi_thread")]
|
||||||
|
async fn kcl_test_execute() {
|
||||||
|
super::execute(TEST_NAME, false).await
|
||||||
|
}
|
||||||
|
}
|
||||||
|
mod index_of_array {
|
||||||
|
const TEST_NAME: &str = "index_of_array";
|
||||||
|
|
||||||
|
/// Test tokenizing KCL.
|
||||||
|
#[test]
|
||||||
|
fn tokenize() {
|
||||||
|
super::tokenize(TEST_NAME)
|
||||||
|
}
|
||||||
|
|
||||||
|
/// Test parsing KCL.
|
||||||
|
#[test]
|
||||||
|
fn parse() {
|
||||||
|
super::parse(TEST_NAME)
|
||||||
|
}
|
||||||
|
|
||||||
|
/// Test that parsing and unparsing KCL produces the original KCL input.
|
||||||
|
#[test]
|
||||||
|
fn unparse() {
|
||||||
|
super::unparse(TEST_NAME)
|
||||||
|
}
|
||||||
|
|
||||||
|
/// Test that KCL is executed correctly.
|
||||||
|
#[tokio::test(flavor = "multi_thread")]
|
||||||
|
async fn kcl_test_execute() {
|
||||||
|
super::execute(TEST_NAME, false).await
|
||||||
|
}
|
||||||
|
}
|
||||||
|
mod comparisons {
|
||||||
|
const TEST_NAME: &str = "comparisons";
|
||||||
|
|
||||||
|
/// Test tokenizing KCL.
|
||||||
|
#[test]
|
||||||
|
fn tokenize() {
|
||||||
|
super::tokenize(TEST_NAME)
|
||||||
|
}
|
||||||
|
|
||||||
|
/// Test parsing KCL.
|
||||||
|
#[test]
|
||||||
|
fn parse() {
|
||||||
|
super::parse(TEST_NAME)
|
||||||
|
}
|
||||||
|
|
||||||
|
/// Test that parsing and unparsing KCL produces the original KCL input.
|
||||||
|
#[test]
|
||||||
|
fn unparse() {
|
||||||
|
super::unparse(TEST_NAME)
|
||||||
|
}
|
||||||
|
|
||||||
|
/// Test that KCL is executed correctly.
|
||||||
|
#[tokio::test(flavor = "multi_thread")]
|
||||||
|
async fn kcl_test_execute() {
|
||||||
|
super::execute(TEST_NAME, false).await
|
||||||
|
}
|
||||||
|
}
|
||||||
|
mod array_range_expr {
|
||||||
|
const TEST_NAME: &str = "array_range_expr";
|
||||||
|
|
||||||
|
/// Test tokenizing KCL.
|
||||||
|
#[test]
|
||||||
|
fn tokenize() {
|
||||||
|
super::tokenize(TEST_NAME)
|
||||||
|
}
|
||||||
|
|
||||||
|
/// Test parsing KCL.
|
||||||
|
#[test]
|
||||||
|
fn parse() {
|
||||||
|
super::parse(TEST_NAME)
|
||||||
|
}
|
||||||
|
|
||||||
|
/// Test that parsing and unparsing KCL produces the original KCL input.
|
||||||
|
#[test]
|
||||||
|
fn unparse() {
|
||||||
|
super::unparse(TEST_NAME)
|
||||||
|
}
|
||||||
|
|
||||||
|
/// Test that KCL is executed correctly.
|
||||||
|
#[tokio::test(flavor = "multi_thread")]
|
||||||
|
async fn kcl_test_execute() {
|
||||||
|
super::execute(TEST_NAME, false).await
|
||||||
|
}
|
||||||
|
}
|
||||||
|
mod array_range_negative_expr {
|
||||||
|
const TEST_NAME: &str = "array_range_negative_expr";
|
||||||
|
|
||||||
|
/// Test tokenizing KCL.
|
||||||
|
#[test]
|
||||||
|
fn tokenize() {
|
||||||
|
super::tokenize(TEST_NAME)
|
||||||
|
}
|
||||||
|
|
||||||
|
/// Test parsing KCL.
|
||||||
|
#[test]
|
||||||
|
fn parse() {
|
||||||
|
super::parse(TEST_NAME)
|
||||||
|
}
|
||||||
|
|
||||||
|
/// Test that parsing and unparsing KCL produces the original KCL input.
|
||||||
|
#[test]
|
||||||
|
fn unparse() {
|
||||||
|
super::unparse(TEST_NAME)
|
||||||
|
}
|
||||||
|
|
||||||
|
/// Test that KCL is executed correctly.
|
||||||
|
#[tokio::test(flavor = "multi_thread")]
|
||||||
|
async fn kcl_test_execute() {
|
||||||
|
super::execute(TEST_NAME, false).await
|
||||||
|
}
|
||||||
|
}
|
||||||
|
mod sketch_in_object {
|
||||||
|
const TEST_NAME: &str = "sketch_in_object";
|
||||||
|
|
||||||
|
/// Test tokenizing KCL.
|
||||||
|
#[test]
|
||||||
|
fn tokenize() {
|
||||||
|
super::tokenize(TEST_NAME)
|
||||||
|
}
|
||||||
|
|
||||||
|
/// Test parsing KCL.
|
||||||
|
#[test]
|
||||||
|
fn parse() {
|
||||||
|
super::parse(TEST_NAME)
|
||||||
|
}
|
||||||
|
|
||||||
|
/// Test that parsing and unparsing KCL produces the original KCL input.
|
||||||
|
#[test]
|
||||||
|
fn unparse() {
|
||||||
|
super::unparse(TEST_NAME)
|
||||||
|
}
|
||||||
|
|
||||||
|
/// Test that KCL is executed correctly.
|
||||||
|
#[tokio::test(flavor = "multi_thread")]
|
||||||
|
async fn kcl_test_execute() {
|
||||||
|
super::execute(TEST_NAME, false).await
|
||||||
|
}
|
||||||
|
}
|
||||||
|
mod if_else {
|
||||||
|
const TEST_NAME: &str = "if_else";
|
||||||
|
|
||||||
|
/// Test tokenizing KCL.
|
||||||
|
#[test]
|
||||||
|
fn tokenize() {
|
||||||
|
super::tokenize(TEST_NAME)
|
||||||
|
}
|
||||||
|
|
||||||
|
/// Test parsing KCL.
|
||||||
|
#[test]
|
||||||
|
fn parse() {
|
||||||
|
super::parse(TEST_NAME)
|
||||||
|
}
|
||||||
|
|
||||||
|
/// Test that parsing and unparsing KCL produces the original KCL input.
|
||||||
|
#[test]
|
||||||
|
fn unparse() {
|
||||||
|
super::unparse(TEST_NAME)
|
||||||
|
}
|
||||||
|
|
||||||
|
/// Test that KCL is executed correctly.
|
||||||
|
#[tokio::test(flavor = "multi_thread")]
|
||||||
|
async fn kcl_test_execute() {
|
||||||
|
super::execute(TEST_NAME, false).await
|
||||||
|
}
|
||||||
|
}
|
||||||
|
mod add_lots {
|
||||||
|
const TEST_NAME: &str = "add_lots";
|
||||||
|
|
||||||
|
/// Test tokenizing KCL.
|
||||||
|
#[test]
|
||||||
|
fn tokenize() {
|
||||||
|
super::tokenize(TEST_NAME)
|
||||||
|
}
|
||||||
|
|
||||||
|
/// Test parsing KCL.
|
||||||
|
#[test]
|
||||||
|
fn parse() {
|
||||||
|
super::parse(TEST_NAME)
|
||||||
|
}
|
||||||
|
|
||||||
|
/// Test that parsing and unparsing KCL produces the original KCL input.
|
||||||
|
#[test]
|
||||||
|
fn unparse() {
|
||||||
|
super::unparse(TEST_NAME)
|
||||||
|
}
|
||||||
|
|
||||||
|
/// Test that KCL is executed correctly.
|
||||||
|
#[tokio::test(flavor = "multi_thread")]
|
||||||
|
async fn kcl_test_execute() {
|
||||||
|
super::execute(TEST_NAME, false).await
|
||||||
|
}
|
||||||
|
}
|
||||||
|
mod array_elem_push {
|
||||||
|
const TEST_NAME: &str = "array_elem_push";
|
||||||
|
|
||||||
|
/// Test tokenizing KCL.
|
||||||
|
#[test]
|
||||||
|
fn tokenize() {
|
||||||
|
super::tokenize(TEST_NAME)
|
||||||
|
}
|
||||||
|
|
||||||
|
/// Test parsing KCL.
|
||||||
|
#[test]
|
||||||
|
fn parse() {
|
||||||
|
super::parse(TEST_NAME)
|
||||||
|
}
|
||||||
|
|
||||||
|
/// Test that parsing and unparsing KCL produces the original KCL input.
|
||||||
|
#[test]
|
||||||
|
fn unparse() {
|
||||||
|
super::unparse(TEST_NAME)
|
||||||
|
}
|
||||||
|
|
||||||
|
/// Test that KCL is executed correctly.
|
||||||
|
#[tokio::test(flavor = "multi_thread")]
|
||||||
|
async fn kcl_test_execute() {
|
||||||
|
super::execute(TEST_NAME, false).await
|
||||||
|
}
|
||||||
|
}
|
||||||
|
3205
src/wasm-lib/kcl/tests/add_lots/ast.snap
Normal file
3205
src/wasm-lib/kcl/tests/add_lots/ast.snap
Normal file
File diff suppressed because it is too large
Load Diff
7
src/wasm-lib/kcl/tests/add_lots/input.kcl
Normal file
7
src/wasm-lib/kcl/tests/add_lots/input.kcl
Normal file
@ -0,0 +1,7 @@
|
|||||||
|
fn f = (i) => {
|
||||||
|
return i * 2
|
||||||
|
}
|
||||||
|
|
||||||
|
x = f(0) + f(1) + f(2) + f(3) + f(4) + f(5) + f(6) + f(7) + f(8) + f(9) + f(10) + f(11) + f(12) + f(13) + f(14) + f(15) + f(16) + f(17) + f(18) + f(19) + f(20) + f(21) + f(22) + f(23) + f(24) + f(25) + f(26) + f(27) + f(28) + f(29) + f(30) + f(31) + f(32) + f(33) + f(34) + f(35) + f(36) + f(37) + f(38) + f(39) + f(40) + f(41) + f(42) + f(43) + f(44) + f(45) + f(46) + f(47) + f(48) + f(49) + f(50) + f(51) + f(52) + f(53) + f(54) + f(55) + f(56) + f(57) + f(58) + f(59) + f(60) + f(61) + f(62) + f(63) + f(64) + f(65) + f(66) + f(67) + f(68) + f(69) + f(70) + f(71) + f(72) + f(73) + f(74) + f(75) + f(76) + f(77) + f(78) + f(79) + f(80) + f(81) + f(82) + f(83) + f(84) + f(85) + f(86) + f(87) + f(88) + f(89) + f(90) + f(91) + f(92) + f(93) + f(94) + f(95) + f(96) + f(97) + f(98) + f(99) + f(100)
|
||||||
|
|
||||||
|
assertEqual(x, 10100, 0.1, "Big sum")
|
150
src/wasm-lib/kcl/tests/add_lots/program_memory.snap
Normal file
150
src/wasm-lib/kcl/tests/add_lots/program_memory.snap
Normal file
@ -0,0 +1,150 @@
|
|||||||
|
---
|
||||||
|
source: kcl/src/simulation_tests.rs
|
||||||
|
description: Program memory after executing add_lots.kcl
|
||||||
|
snapshot_kind: text
|
||||||
|
---
|
||||||
|
{
|
||||||
|
"environments": [
|
||||||
|
{
|
||||||
|
"bindings": {
|
||||||
|
"HALF_TURN": {
|
||||||
|
"type": "UserVal",
|
||||||
|
"type": "UserVal",
|
||||||
|
"value": 180,
|
||||||
|
"__meta": []
|
||||||
|
},
|
||||||
|
"QUARTER_TURN": {
|
||||||
|
"type": "UserVal",
|
||||||
|
"type": "UserVal",
|
||||||
|
"value": 90,
|
||||||
|
"__meta": []
|
||||||
|
},
|
||||||
|
"THREE_QUARTER_TURN": {
|
||||||
|
"type": "UserVal",
|
||||||
|
"type": "UserVal",
|
||||||
|
"value": 270,
|
||||||
|
"__meta": []
|
||||||
|
},
|
||||||
|
"ZERO": {
|
||||||
|
"type": "UserVal",
|
||||||
|
"type": "UserVal",
|
||||||
|
"value": 0,
|
||||||
|
"__meta": []
|
||||||
|
},
|
||||||
|
"f": {
|
||||||
|
"type": "Function",
|
||||||
|
"expression": {
|
||||||
|
"body": {
|
||||||
|
"body": [
|
||||||
|
{
|
||||||
|
"argument": {
|
||||||
|
"end": 30,
|
||||||
|
"left": {
|
||||||
|
"end": 26,
|
||||||
|
"name": "i",
|
||||||
|
"start": 25,
|
||||||
|
"type": "Identifier",
|
||||||
|
"type": "Identifier"
|
||||||
|
},
|
||||||
|
"operator": "*",
|
||||||
|
"right": {
|
||||||
|
"end": 30,
|
||||||
|
"raw": "2",
|
||||||
|
"start": 29,
|
||||||
|
"type": "Literal",
|
||||||
|
"type": "Literal",
|
||||||
|
"value": 2
|
||||||
|
},
|
||||||
|
"start": 25,
|
||||||
|
"type": "BinaryExpression",
|
||||||
|
"type": "BinaryExpression"
|
||||||
|
},
|
||||||
|
"end": 30,
|
||||||
|
"start": 18,
|
||||||
|
"type": "ReturnStatement",
|
||||||
|
"type": "ReturnStatement"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"end": 32,
|
||||||
|
"start": 14
|
||||||
|
},
|
||||||
|
"end": 32,
|
||||||
|
"params": [
|
||||||
|
{
|
||||||
|
"type": "Parameter",
|
||||||
|
"identifier": {
|
||||||
|
"end": 9,
|
||||||
|
"name": "i",
|
||||||
|
"start": 8,
|
||||||
|
"type": "Identifier"
|
||||||
|
},
|
||||||
|
"optional": false
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"start": 7,
|
||||||
|
"type": "FunctionExpression"
|
||||||
|
},
|
||||||
|
"memory": {
|
||||||
|
"environments": [
|
||||||
|
{
|
||||||
|
"bindings": {
|
||||||
|
"HALF_TURN": {
|
||||||
|
"type": "UserVal",
|
||||||
|
"type": "UserVal",
|
||||||
|
"value": 180,
|
||||||
|
"__meta": []
|
||||||
|
},
|
||||||
|
"QUARTER_TURN": {
|
||||||
|
"type": "UserVal",
|
||||||
|
"type": "UserVal",
|
||||||
|
"value": 90,
|
||||||
|
"__meta": []
|
||||||
|
},
|
||||||
|
"THREE_QUARTER_TURN": {
|
||||||
|
"type": "UserVal",
|
||||||
|
"type": "UserVal",
|
||||||
|
"value": 270,
|
||||||
|
"__meta": []
|
||||||
|
},
|
||||||
|
"ZERO": {
|
||||||
|
"type": "UserVal",
|
||||||
|
"type": "UserVal",
|
||||||
|
"value": 0,
|
||||||
|
"__meta": []
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"parent": null
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"currentEnv": 0,
|
||||||
|
"return": null
|
||||||
|
},
|
||||||
|
"__meta": [
|
||||||
|
{
|
||||||
|
"sourceRange": [
|
||||||
|
7,
|
||||||
|
32
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"x": {
|
||||||
|
"type": "UserVal",
|
||||||
|
"type": "UserVal",
|
||||||
|
"value": 10100.0,
|
||||||
|
"__meta": [
|
||||||
|
{
|
||||||
|
"sourceRange": [
|
||||||
|
38,
|
||||||
|
834
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"parent": null
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"currentEnv": 0,
|
||||||
|
"return": null
|
||||||
|
}
|
4491
src/wasm-lib/kcl/tests/add_lots/tokens.snap
Normal file
4491
src/wasm-lib/kcl/tests/add_lots/tokens.snap
Normal file
File diff suppressed because it is too large
Load Diff
768
src/wasm-lib/kcl/tests/array_elem_push/ast.snap
Normal file
768
src/wasm-lib/kcl/tests/array_elem_push/ast.snap
Normal file
@ -0,0 +1,768 @@
|
|||||||
|
---
|
||||||
|
source: kcl/src/simulation_tests.rs
|
||||||
|
description: Result of parsing array_elem_push.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": 39,
|
||||||
|
"id": {
|
||||||
|
"end": 24,
|
||||||
|
"name": "new_arr1",
|
||||||
|
"start": 16,
|
||||||
|
"type": "Identifier"
|
||||||
|
},
|
||||||
|
"init": {
|
||||||
|
"arguments": [
|
||||||
|
{
|
||||||
|
"end": 35,
|
||||||
|
"name": "arr",
|
||||||
|
"start": 32,
|
||||||
|
"type": "Identifier",
|
||||||
|
"type": "Identifier"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"end": 38,
|
||||||
|
"raw": "4",
|
||||||
|
"start": 37,
|
||||||
|
"type": "Literal",
|
||||||
|
"type": "Literal",
|
||||||
|
"value": 4
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"callee": {
|
||||||
|
"end": 31,
|
||||||
|
"name": "push",
|
||||||
|
"start": 27,
|
||||||
|
"type": "Identifier"
|
||||||
|
},
|
||||||
|
"end": 39,
|
||||||
|
"optional": false,
|
||||||
|
"start": 27,
|
||||||
|
"type": "CallExpression",
|
||||||
|
"type": "CallExpression"
|
||||||
|
},
|
||||||
|
"start": 16,
|
||||||
|
"type": "VariableDeclarator"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"end": 39,
|
||||||
|
"kind": "const",
|
||||||
|
"start": 16,
|
||||||
|
"type": "VariableDeclaration",
|
||||||
|
"type": "VariableDeclaration"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"declarations": [
|
||||||
|
{
|
||||||
|
"end": 68,
|
||||||
|
"id": {
|
||||||
|
"end": 48,
|
||||||
|
"name": "new_arr2",
|
||||||
|
"start": 40,
|
||||||
|
"type": "Identifier"
|
||||||
|
},
|
||||||
|
"init": {
|
||||||
|
"arguments": [
|
||||||
|
{
|
||||||
|
"end": 64,
|
||||||
|
"name": "new_arr1",
|
||||||
|
"start": 56,
|
||||||
|
"type": "Identifier",
|
||||||
|
"type": "Identifier"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"end": 67,
|
||||||
|
"raw": "5",
|
||||||
|
"start": 66,
|
||||||
|
"type": "Literal",
|
||||||
|
"type": "Literal",
|
||||||
|
"value": 5
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"callee": {
|
||||||
|
"end": 55,
|
||||||
|
"name": "push",
|
||||||
|
"start": 51,
|
||||||
|
"type": "Identifier"
|
||||||
|
},
|
||||||
|
"end": 68,
|
||||||
|
"optional": false,
|
||||||
|
"start": 51,
|
||||||
|
"type": "CallExpression",
|
||||||
|
"type": "CallExpression"
|
||||||
|
},
|
||||||
|
"start": 40,
|
||||||
|
"type": "VariableDeclarator"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"end": 68,
|
||||||
|
"kind": "const",
|
||||||
|
"start": 40,
|
||||||
|
"type": "VariableDeclaration",
|
||||||
|
"type": "VariableDeclaration"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"end": 142,
|
||||||
|
"expression": {
|
||||||
|
"arguments": [
|
||||||
|
{
|
||||||
|
"computed": false,
|
||||||
|
"end": 92,
|
||||||
|
"object": {
|
||||||
|
"end": 89,
|
||||||
|
"name": "new_arr1",
|
||||||
|
"start": 81,
|
||||||
|
"type": "Identifier",
|
||||||
|
"type": "Identifier"
|
||||||
|
},
|
||||||
|
"property": {
|
||||||
|
"end": 91,
|
||||||
|
"raw": "0",
|
||||||
|
"start": 90,
|
||||||
|
"type": "Literal",
|
||||||
|
"type": "Literal",
|
||||||
|
"value": 0
|
||||||
|
},
|
||||||
|
"start": 81,
|
||||||
|
"type": "MemberExpression",
|
||||||
|
"type": "MemberExpression"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"end": 95,
|
||||||
|
"raw": "1",
|
||||||
|
"start": 94,
|
||||||
|
"type": "Literal",
|
||||||
|
"type": "Literal",
|
||||||
|
"value": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"end": 104,
|
||||||
|
"raw": "0.00001",
|
||||||
|
"start": 97,
|
||||||
|
"type": "Literal",
|
||||||
|
"type": "Literal",
|
||||||
|
"value": 0.00001
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"end": 141,
|
||||||
|
"raw": "\"element 0 should not have changed\"",
|
||||||
|
"start": 106,
|
||||||
|
"type": "Literal",
|
||||||
|
"type": "Literal",
|
||||||
|
"value": "element 0 should not have changed"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"callee": {
|
||||||
|
"end": 80,
|
||||||
|
"name": "assertEqual",
|
||||||
|
"start": 69,
|
||||||
|
"type": "Identifier"
|
||||||
|
},
|
||||||
|
"end": 142,
|
||||||
|
"optional": false,
|
||||||
|
"start": 69,
|
||||||
|
"type": "CallExpression",
|
||||||
|
"type": "CallExpression"
|
||||||
|
},
|
||||||
|
"start": 69,
|
||||||
|
"type": "ExpressionStatement",
|
||||||
|
"type": "ExpressionStatement"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"end": 216,
|
||||||
|
"expression": {
|
||||||
|
"arguments": [
|
||||||
|
{
|
||||||
|
"computed": false,
|
||||||
|
"end": 166,
|
||||||
|
"object": {
|
||||||
|
"end": 163,
|
||||||
|
"name": "new_arr1",
|
||||||
|
"start": 155,
|
||||||
|
"type": "Identifier",
|
||||||
|
"type": "Identifier"
|
||||||
|
},
|
||||||
|
"property": {
|
||||||
|
"end": 165,
|
||||||
|
"raw": "1",
|
||||||
|
"start": 164,
|
||||||
|
"type": "Literal",
|
||||||
|
"type": "Literal",
|
||||||
|
"value": 1
|
||||||
|
},
|
||||||
|
"start": 155,
|
||||||
|
"type": "MemberExpression",
|
||||||
|
"type": "MemberExpression"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"end": 169,
|
||||||
|
"raw": "2",
|
||||||
|
"start": 168,
|
||||||
|
"type": "Literal",
|
||||||
|
"type": "Literal",
|
||||||
|
"value": 2
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"end": 178,
|
||||||
|
"raw": "0.00001",
|
||||||
|
"start": 171,
|
||||||
|
"type": "Literal",
|
||||||
|
"type": "Literal",
|
||||||
|
"value": 0.00001
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"end": 215,
|
||||||
|
"raw": "\"element 1 should not have changed\"",
|
||||||
|
"start": 180,
|
||||||
|
"type": "Literal",
|
||||||
|
"type": "Literal",
|
||||||
|
"value": "element 1 should not have changed"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"callee": {
|
||||||
|
"end": 154,
|
||||||
|
"name": "assertEqual",
|
||||||
|
"start": 143,
|
||||||
|
"type": "Identifier"
|
||||||
|
},
|
||||||
|
"end": 216,
|
||||||
|
"optional": false,
|
||||||
|
"start": 143,
|
||||||
|
"type": "CallExpression",
|
||||||
|
"type": "CallExpression"
|
||||||
|
},
|
||||||
|
"start": 143,
|
||||||
|
"type": "ExpressionStatement",
|
||||||
|
"type": "ExpressionStatement"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"end": 290,
|
||||||
|
"expression": {
|
||||||
|
"arguments": [
|
||||||
|
{
|
||||||
|
"computed": false,
|
||||||
|
"end": 240,
|
||||||
|
"object": {
|
||||||
|
"end": 237,
|
||||||
|
"name": "new_arr1",
|
||||||
|
"start": 229,
|
||||||
|
"type": "Identifier",
|
||||||
|
"type": "Identifier"
|
||||||
|
},
|
||||||
|
"property": {
|
||||||
|
"end": 239,
|
||||||
|
"raw": "2",
|
||||||
|
"start": 238,
|
||||||
|
"type": "Literal",
|
||||||
|
"type": "Literal",
|
||||||
|
"value": 2
|
||||||
|
},
|
||||||
|
"start": 229,
|
||||||
|
"type": "MemberExpression",
|
||||||
|
"type": "MemberExpression"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"end": 243,
|
||||||
|
"raw": "3",
|
||||||
|
"start": 242,
|
||||||
|
"type": "Literal",
|
||||||
|
"type": "Literal",
|
||||||
|
"value": 3
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"end": 252,
|
||||||
|
"raw": "0.00001",
|
||||||
|
"start": 245,
|
||||||
|
"type": "Literal",
|
||||||
|
"type": "Literal",
|
||||||
|
"value": 0.00001
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"end": 289,
|
||||||
|
"raw": "\"element 2 should not have changed\"",
|
||||||
|
"start": 254,
|
||||||
|
"type": "Literal",
|
||||||
|
"type": "Literal",
|
||||||
|
"value": "element 2 should not have changed"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"callee": {
|
||||||
|
"end": 228,
|
||||||
|
"name": "assertEqual",
|
||||||
|
"start": 217,
|
||||||
|
"type": "Identifier"
|
||||||
|
},
|
||||||
|
"end": 290,
|
||||||
|
"optional": false,
|
||||||
|
"start": 217,
|
||||||
|
"type": "CallExpression",
|
||||||
|
"type": "CallExpression"
|
||||||
|
},
|
||||||
|
"start": 217,
|
||||||
|
"type": "ExpressionStatement",
|
||||||
|
"type": "ExpressionStatement"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"end": 366,
|
||||||
|
"expression": {
|
||||||
|
"arguments": [
|
||||||
|
{
|
||||||
|
"computed": false,
|
||||||
|
"end": 314,
|
||||||
|
"object": {
|
||||||
|
"end": 311,
|
||||||
|
"name": "new_arr1",
|
||||||
|
"start": 303,
|
||||||
|
"type": "Identifier",
|
||||||
|
"type": "Identifier"
|
||||||
|
},
|
||||||
|
"property": {
|
||||||
|
"end": 313,
|
||||||
|
"raw": "3",
|
||||||
|
"start": 312,
|
||||||
|
"type": "Literal",
|
||||||
|
"type": "Literal",
|
||||||
|
"value": 3
|
||||||
|
},
|
||||||
|
"start": 303,
|
||||||
|
"type": "MemberExpression",
|
||||||
|
"type": "MemberExpression"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"end": 317,
|
||||||
|
"raw": "4",
|
||||||
|
"start": 316,
|
||||||
|
"type": "Literal",
|
||||||
|
"type": "Literal",
|
||||||
|
"value": 4
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"end": 326,
|
||||||
|
"raw": "0.00001",
|
||||||
|
"start": 319,
|
||||||
|
"type": "Literal",
|
||||||
|
"type": "Literal",
|
||||||
|
"value": 0.00001
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"end": 365,
|
||||||
|
"raw": "\"4 was added to the end of the array\"",
|
||||||
|
"start": 328,
|
||||||
|
"type": "Literal",
|
||||||
|
"type": "Literal",
|
||||||
|
"value": "4 was added to the end of the array"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"callee": {
|
||||||
|
"end": 302,
|
||||||
|
"name": "assertEqual",
|
||||||
|
"start": 291,
|
||||||
|
"type": "Identifier"
|
||||||
|
},
|
||||||
|
"end": 366,
|
||||||
|
"optional": false,
|
||||||
|
"start": 291,
|
||||||
|
"type": "CallExpression",
|
||||||
|
"type": "CallExpression"
|
||||||
|
},
|
||||||
|
"start": 291,
|
||||||
|
"type": "ExpressionStatement",
|
||||||
|
"type": "ExpressionStatement"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"end": 440,
|
||||||
|
"expression": {
|
||||||
|
"arguments": [
|
||||||
|
{
|
||||||
|
"computed": false,
|
||||||
|
"end": 390,
|
||||||
|
"object": {
|
||||||
|
"end": 387,
|
||||||
|
"name": "new_arr2",
|
||||||
|
"start": 379,
|
||||||
|
"type": "Identifier",
|
||||||
|
"type": "Identifier"
|
||||||
|
},
|
||||||
|
"property": {
|
||||||
|
"end": 389,
|
||||||
|
"raw": "0",
|
||||||
|
"start": 388,
|
||||||
|
"type": "Literal",
|
||||||
|
"type": "Literal",
|
||||||
|
"value": 0
|
||||||
|
},
|
||||||
|
"start": 379,
|
||||||
|
"type": "MemberExpression",
|
||||||
|
"type": "MemberExpression"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"end": 393,
|
||||||
|
"raw": "1",
|
||||||
|
"start": 392,
|
||||||
|
"type": "Literal",
|
||||||
|
"type": "Literal",
|
||||||
|
"value": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"end": 402,
|
||||||
|
"raw": "0.00001",
|
||||||
|
"start": 395,
|
||||||
|
"type": "Literal",
|
||||||
|
"type": "Literal",
|
||||||
|
"value": 0.00001
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"end": 439,
|
||||||
|
"raw": "\"element 0 should not have changed\"",
|
||||||
|
"start": 404,
|
||||||
|
"type": "Literal",
|
||||||
|
"type": "Literal",
|
||||||
|
"value": "element 0 should not have changed"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"callee": {
|
||||||
|
"end": 378,
|
||||||
|
"name": "assertEqual",
|
||||||
|
"start": 367,
|
||||||
|
"type": "Identifier"
|
||||||
|
},
|
||||||
|
"end": 440,
|
||||||
|
"optional": false,
|
||||||
|
"start": 367,
|
||||||
|
"type": "CallExpression",
|
||||||
|
"type": "CallExpression"
|
||||||
|
},
|
||||||
|
"start": 367,
|
||||||
|
"type": "ExpressionStatement",
|
||||||
|
"type": "ExpressionStatement"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"end": 514,
|
||||||
|
"expression": {
|
||||||
|
"arguments": [
|
||||||
|
{
|
||||||
|
"computed": false,
|
||||||
|
"end": 464,
|
||||||
|
"object": {
|
||||||
|
"end": 461,
|
||||||
|
"name": "new_arr2",
|
||||||
|
"start": 453,
|
||||||
|
"type": "Identifier",
|
||||||
|
"type": "Identifier"
|
||||||
|
},
|
||||||
|
"property": {
|
||||||
|
"end": 463,
|
||||||
|
"raw": "1",
|
||||||
|
"start": 462,
|
||||||
|
"type": "Literal",
|
||||||
|
"type": "Literal",
|
||||||
|
"value": 1
|
||||||
|
},
|
||||||
|
"start": 453,
|
||||||
|
"type": "MemberExpression",
|
||||||
|
"type": "MemberExpression"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"end": 467,
|
||||||
|
"raw": "2",
|
||||||
|
"start": 466,
|
||||||
|
"type": "Literal",
|
||||||
|
"type": "Literal",
|
||||||
|
"value": 2
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"end": 476,
|
||||||
|
"raw": "0.00001",
|
||||||
|
"start": 469,
|
||||||
|
"type": "Literal",
|
||||||
|
"type": "Literal",
|
||||||
|
"value": 0.00001
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"end": 513,
|
||||||
|
"raw": "\"element 1 should not have changed\"",
|
||||||
|
"start": 478,
|
||||||
|
"type": "Literal",
|
||||||
|
"type": "Literal",
|
||||||
|
"value": "element 1 should not have changed"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"callee": {
|
||||||
|
"end": 452,
|
||||||
|
"name": "assertEqual",
|
||||||
|
"start": 441,
|
||||||
|
"type": "Identifier"
|
||||||
|
},
|
||||||
|
"end": 514,
|
||||||
|
"optional": false,
|
||||||
|
"start": 441,
|
||||||
|
"type": "CallExpression",
|
||||||
|
"type": "CallExpression"
|
||||||
|
},
|
||||||
|
"start": 441,
|
||||||
|
"type": "ExpressionStatement",
|
||||||
|
"type": "ExpressionStatement"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"end": 588,
|
||||||
|
"expression": {
|
||||||
|
"arguments": [
|
||||||
|
{
|
||||||
|
"computed": false,
|
||||||
|
"end": 538,
|
||||||
|
"object": {
|
||||||
|
"end": 535,
|
||||||
|
"name": "new_arr2",
|
||||||
|
"start": 527,
|
||||||
|
"type": "Identifier",
|
||||||
|
"type": "Identifier"
|
||||||
|
},
|
||||||
|
"property": {
|
||||||
|
"end": 537,
|
||||||
|
"raw": "2",
|
||||||
|
"start": 536,
|
||||||
|
"type": "Literal",
|
||||||
|
"type": "Literal",
|
||||||
|
"value": 2
|
||||||
|
},
|
||||||
|
"start": 527,
|
||||||
|
"type": "MemberExpression",
|
||||||
|
"type": "MemberExpression"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"end": 541,
|
||||||
|
"raw": "3",
|
||||||
|
"start": 540,
|
||||||
|
"type": "Literal",
|
||||||
|
"type": "Literal",
|
||||||
|
"value": 3
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"end": 550,
|
||||||
|
"raw": "0.00001",
|
||||||
|
"start": 543,
|
||||||
|
"type": "Literal",
|
||||||
|
"type": "Literal",
|
||||||
|
"value": 0.00001
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"end": 587,
|
||||||
|
"raw": "\"element 2 should not have changed\"",
|
||||||
|
"start": 552,
|
||||||
|
"type": "Literal",
|
||||||
|
"type": "Literal",
|
||||||
|
"value": "element 2 should not have changed"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"callee": {
|
||||||
|
"end": 526,
|
||||||
|
"name": "assertEqual",
|
||||||
|
"start": 515,
|
||||||
|
"type": "Identifier"
|
||||||
|
},
|
||||||
|
"end": 588,
|
||||||
|
"optional": false,
|
||||||
|
"start": 515,
|
||||||
|
"type": "CallExpression",
|
||||||
|
"type": "CallExpression"
|
||||||
|
},
|
||||||
|
"start": 515,
|
||||||
|
"type": "ExpressionStatement",
|
||||||
|
"type": "ExpressionStatement"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"end": 664,
|
||||||
|
"expression": {
|
||||||
|
"arguments": [
|
||||||
|
{
|
||||||
|
"computed": false,
|
||||||
|
"end": 612,
|
||||||
|
"object": {
|
||||||
|
"end": 609,
|
||||||
|
"name": "new_arr2",
|
||||||
|
"start": 601,
|
||||||
|
"type": "Identifier",
|
||||||
|
"type": "Identifier"
|
||||||
|
},
|
||||||
|
"property": {
|
||||||
|
"end": 611,
|
||||||
|
"raw": "3",
|
||||||
|
"start": 610,
|
||||||
|
"type": "Literal",
|
||||||
|
"type": "Literal",
|
||||||
|
"value": 3
|
||||||
|
},
|
||||||
|
"start": 601,
|
||||||
|
"type": "MemberExpression",
|
||||||
|
"type": "MemberExpression"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"end": 615,
|
||||||
|
"raw": "4",
|
||||||
|
"start": 614,
|
||||||
|
"type": "Literal",
|
||||||
|
"type": "Literal",
|
||||||
|
"value": 4
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"end": 624,
|
||||||
|
"raw": "0.00001",
|
||||||
|
"start": 617,
|
||||||
|
"type": "Literal",
|
||||||
|
"type": "Literal",
|
||||||
|
"value": 0.00001
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"end": 663,
|
||||||
|
"raw": "\"4 was added to the end of the array\"",
|
||||||
|
"start": 626,
|
||||||
|
"type": "Literal",
|
||||||
|
"type": "Literal",
|
||||||
|
"value": "4 was added to the end of the array"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"callee": {
|
||||||
|
"end": 600,
|
||||||
|
"name": "assertEqual",
|
||||||
|
"start": 589,
|
||||||
|
"type": "Identifier"
|
||||||
|
},
|
||||||
|
"end": 664,
|
||||||
|
"optional": false,
|
||||||
|
"start": 589,
|
||||||
|
"type": "CallExpression",
|
||||||
|
"type": "CallExpression"
|
||||||
|
},
|
||||||
|
"start": 589,
|
||||||
|
"type": "ExpressionStatement",
|
||||||
|
"type": "ExpressionStatement"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"end": 740,
|
||||||
|
"expression": {
|
||||||
|
"arguments": [
|
||||||
|
{
|
||||||
|
"computed": false,
|
||||||
|
"end": 688,
|
||||||
|
"object": {
|
||||||
|
"end": 685,
|
||||||
|
"name": "new_arr2",
|
||||||
|
"start": 677,
|
||||||
|
"type": "Identifier",
|
||||||
|
"type": "Identifier"
|
||||||
|
},
|
||||||
|
"property": {
|
||||||
|
"end": 687,
|
||||||
|
"raw": "4",
|
||||||
|
"start": 686,
|
||||||
|
"type": "Literal",
|
||||||
|
"type": "Literal",
|
||||||
|
"value": 4
|
||||||
|
},
|
||||||
|
"start": 677,
|
||||||
|
"type": "MemberExpression",
|
||||||
|
"type": "MemberExpression"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"end": 691,
|
||||||
|
"raw": "5",
|
||||||
|
"start": 690,
|
||||||
|
"type": "Literal",
|
||||||
|
"type": "Literal",
|
||||||
|
"value": 5
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"end": 700,
|
||||||
|
"raw": "0.00001",
|
||||||
|
"start": 693,
|
||||||
|
"type": "Literal",
|
||||||
|
"type": "Literal",
|
||||||
|
"value": 0.00001
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"end": 739,
|
||||||
|
"raw": "\"5 was added to the end of the array\"",
|
||||||
|
"start": 702,
|
||||||
|
"type": "Literal",
|
||||||
|
"type": "Literal",
|
||||||
|
"value": "5 was added to the end of the array"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"callee": {
|
||||||
|
"end": 676,
|
||||||
|
"name": "assertEqual",
|
||||||
|
"start": 665,
|
||||||
|
"type": "Identifier"
|
||||||
|
},
|
||||||
|
"end": 740,
|
||||||
|
"optional": false,
|
||||||
|
"start": 665,
|
||||||
|
"type": "CallExpression",
|
||||||
|
"type": "CallExpression"
|
||||||
|
},
|
||||||
|
"start": 665,
|
||||||
|
"type": "ExpressionStatement",
|
||||||
|
"type": "ExpressionStatement"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"end": 741,
|
||||||
|
"start": 0
|
||||||
|
}
|
||||||
|
}
|
94
src/wasm-lib/kcl/tests/array_elem_push/program_memory.snap
Normal file
94
src/wasm-lib/kcl/tests/array_elem_push/program_memory.snap
Normal file
@ -0,0 +1,94 @@
|
|||||||
|
---
|
||||||
|
source: kcl/src/simulation_tests.rs
|
||||||
|
description: Program memory after executing array_elem_push.kcl
|
||||||
|
snapshot_kind: text
|
||||||
|
---
|
||||||
|
{
|
||||||
|
"environments": [
|
||||||
|
{
|
||||||
|
"bindings": {
|
||||||
|
"HALF_TURN": {
|
||||||
|
"type": "UserVal",
|
||||||
|
"type": "UserVal",
|
||||||
|
"value": 180,
|
||||||
|
"__meta": []
|
||||||
|
},
|
||||||
|
"QUARTER_TURN": {
|
||||||
|
"type": "UserVal",
|
||||||
|
"type": "UserVal",
|
||||||
|
"value": 90,
|
||||||
|
"__meta": []
|
||||||
|
},
|
||||||
|
"THREE_QUARTER_TURN": {
|
||||||
|
"type": "UserVal",
|
||||||
|
"type": "UserVal",
|
||||||
|
"value": 270,
|
||||||
|
"__meta": []
|
||||||
|
},
|
||||||
|
"ZERO": {
|
||||||
|
"type": "UserVal",
|
||||||
|
"type": "UserVal",
|
||||||
|
"value": 0,
|
||||||
|
"__meta": []
|
||||||
|
},
|
||||||
|
"arr": {
|
||||||
|
"type": "UserVal",
|
||||||
|
"type": "UserVal",
|
||||||
|
"value": [
|
||||||
|
1,
|
||||||
|
2,
|
||||||
|
3
|
||||||
|
],
|
||||||
|
"__meta": [
|
||||||
|
{
|
||||||
|
"sourceRange": [
|
||||||
|
6,
|
||||||
|
15
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"new_arr1": {
|
||||||
|
"type": "UserVal",
|
||||||
|
"type": "UserVal",
|
||||||
|
"value": [
|
||||||
|
1,
|
||||||
|
2,
|
||||||
|
3,
|
||||||
|
4
|
||||||
|
],
|
||||||
|
"__meta": [
|
||||||
|
{
|
||||||
|
"sourceRange": [
|
||||||
|
27,
|
||||||
|
39
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"new_arr2": {
|
||||||
|
"type": "UserVal",
|
||||||
|
"type": "UserVal",
|
||||||
|
"value": [
|
||||||
|
1,
|
||||||
|
2,
|
||||||
|
3,
|
||||||
|
4,
|
||||||
|
5
|
||||||
|
],
|
||||||
|
"__meta": [
|
||||||
|
{
|
||||||
|
"sourceRange": [
|
||||||
|
51,
|
||||||
|
68
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"parent": null
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"currentEnv": 0,
|
||||||
|
"return": null
|
||||||
|
}
|
1155
src/wasm-lib/kcl/tests/array_elem_push/tokens.snap
Normal file
1155
src/wasm-lib/kcl/tests/array_elem_push/tokens.snap
Normal file
File diff suppressed because it is too large
Load Diff
856
src/wasm-lib/kcl/tests/array_range_expr/ast.snap
Normal file
856
src/wasm-lib/kcl/tests/array_range_expr/ast.snap
Normal file
@ -0,0 +1,856 @@
|
|||||||
|
---
|
||||||
|
source: kcl/src/simulation_tests.rs
|
||||||
|
description: Result of parsing array_range_expr.kcl
|
||||||
|
snapshot_kind: text
|
||||||
|
---
|
||||||
|
{
|
||||||
|
"Ok": {
|
||||||
|
"body": [
|
||||||
|
{
|
||||||
|
"declarations": [
|
||||||
|
{
|
||||||
|
"end": 11,
|
||||||
|
"id": {
|
||||||
|
"end": 2,
|
||||||
|
"name": "r1",
|
||||||
|
"start": 0,
|
||||||
|
"type": "Identifier"
|
||||||
|
},
|
||||||
|
"init": {
|
||||||
|
"end": 11,
|
||||||
|
"endElement": {
|
||||||
|
"end": 10,
|
||||||
|
"raw": "4",
|
||||||
|
"start": 9,
|
||||||
|
"type": "Literal",
|
||||||
|
"type": "Literal",
|
||||||
|
"value": 4
|
||||||
|
},
|
||||||
|
"endInclusive": true,
|
||||||
|
"start": 5,
|
||||||
|
"startElement": {
|
||||||
|
"end": 7,
|
||||||
|
"raw": "0",
|
||||||
|
"start": 6,
|
||||||
|
"type": "Literal",
|
||||||
|
"type": "Literal",
|
||||||
|
"value": 0
|
||||||
|
},
|
||||||
|
"type": "ArrayRangeExpression",
|
||||||
|
"type": "ArrayRangeExpression"
|
||||||
|
},
|
||||||
|
"start": 0,
|
||||||
|
"type": "VariableDeclarator"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"end": 11,
|
||||||
|
"kind": "const",
|
||||||
|
"start": 0,
|
||||||
|
"type": "VariableDeclaration",
|
||||||
|
"type": "VariableDeclaration"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"end": 70,
|
||||||
|
"expression": {
|
||||||
|
"arguments": [
|
||||||
|
{
|
||||||
|
"computed": false,
|
||||||
|
"end": 29,
|
||||||
|
"object": {
|
||||||
|
"end": 26,
|
||||||
|
"name": "r1",
|
||||||
|
"start": 24,
|
||||||
|
"type": "Identifier",
|
||||||
|
"type": "Identifier"
|
||||||
|
},
|
||||||
|
"property": {
|
||||||
|
"end": 28,
|
||||||
|
"raw": "4",
|
||||||
|
"start": 27,
|
||||||
|
"type": "Literal",
|
||||||
|
"type": "Literal",
|
||||||
|
"value": 4
|
||||||
|
},
|
||||||
|
"start": 24,
|
||||||
|
"type": "MemberExpression",
|
||||||
|
"type": "MemberExpression"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"end": 32,
|
||||||
|
"raw": "4",
|
||||||
|
"start": 31,
|
||||||
|
"type": "Literal",
|
||||||
|
"type": "Literal",
|
||||||
|
"value": 4
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"end": 41,
|
||||||
|
"raw": "0.00001",
|
||||||
|
"start": 34,
|
||||||
|
"type": "Literal",
|
||||||
|
"type": "Literal",
|
||||||
|
"value": 0.00001
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"end": 69,
|
||||||
|
"raw": "\"last element is included\"",
|
||||||
|
"start": 43,
|
||||||
|
"type": "Literal",
|
||||||
|
"type": "Literal",
|
||||||
|
"value": "last element is included"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"callee": {
|
||||||
|
"end": 23,
|
||||||
|
"name": "assertEqual",
|
||||||
|
"start": 12,
|
||||||
|
"type": "Identifier"
|
||||||
|
},
|
||||||
|
"end": 70,
|
||||||
|
"optional": false,
|
||||||
|
"start": 12,
|
||||||
|
"type": "CallExpression",
|
||||||
|
"type": "CallExpression"
|
||||||
|
},
|
||||||
|
"start": 12,
|
||||||
|
"type": "ExpressionStatement",
|
||||||
|
"type": "ExpressionStatement"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"declarations": [
|
||||||
|
{
|
||||||
|
"end": 80,
|
||||||
|
"id": {
|
||||||
|
"end": 76,
|
||||||
|
"name": "four",
|
||||||
|
"start": 72,
|
||||||
|
"type": "Identifier"
|
||||||
|
},
|
||||||
|
"init": {
|
||||||
|
"end": 80,
|
||||||
|
"raw": "4",
|
||||||
|
"start": 79,
|
||||||
|
"type": "Literal",
|
||||||
|
"type": "Literal",
|
||||||
|
"value": 4
|
||||||
|
},
|
||||||
|
"start": 72,
|
||||||
|
"type": "VariableDeclarator"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"end": 80,
|
||||||
|
"kind": "const",
|
||||||
|
"start": 72,
|
||||||
|
"type": "VariableDeclaration",
|
||||||
|
"type": "VariableDeclaration"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"declarations": [
|
||||||
|
{
|
||||||
|
"end": 89,
|
||||||
|
"id": {
|
||||||
|
"end": 85,
|
||||||
|
"name": "zero",
|
||||||
|
"start": 81,
|
||||||
|
"type": "Identifier"
|
||||||
|
},
|
||||||
|
"init": {
|
||||||
|
"end": 89,
|
||||||
|
"raw": "0",
|
||||||
|
"start": 88,
|
||||||
|
"type": "Literal",
|
||||||
|
"type": "Literal",
|
||||||
|
"value": 0
|
||||||
|
},
|
||||||
|
"start": 81,
|
||||||
|
"type": "VariableDeclarator"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"end": 89,
|
||||||
|
"kind": "const",
|
||||||
|
"start": 81,
|
||||||
|
"type": "VariableDeclaration",
|
||||||
|
"type": "VariableDeclaration"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"declarations": [
|
||||||
|
{
|
||||||
|
"end": 107,
|
||||||
|
"id": {
|
||||||
|
"end": 92,
|
||||||
|
"name": "r2",
|
||||||
|
"start": 90,
|
||||||
|
"type": "Identifier"
|
||||||
|
},
|
||||||
|
"init": {
|
||||||
|
"end": 107,
|
||||||
|
"endElement": {
|
||||||
|
"end": 106,
|
||||||
|
"name": "four",
|
||||||
|
"start": 102,
|
||||||
|
"type": "Identifier",
|
||||||
|
"type": "Identifier"
|
||||||
|
},
|
||||||
|
"endInclusive": true,
|
||||||
|
"start": 95,
|
||||||
|
"startElement": {
|
||||||
|
"end": 100,
|
||||||
|
"name": "zero",
|
||||||
|
"start": 96,
|
||||||
|
"type": "Identifier",
|
||||||
|
"type": "Identifier"
|
||||||
|
},
|
||||||
|
"type": "ArrayRangeExpression",
|
||||||
|
"type": "ArrayRangeExpression"
|
||||||
|
},
|
||||||
|
"start": 90,
|
||||||
|
"type": "VariableDeclarator"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"end": 107,
|
||||||
|
"kind": "const",
|
||||||
|
"start": 90,
|
||||||
|
"type": "VariableDeclaration",
|
||||||
|
"type": "VariableDeclaration"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"end": 166,
|
||||||
|
"expression": {
|
||||||
|
"arguments": [
|
||||||
|
{
|
||||||
|
"computed": false,
|
||||||
|
"end": 125,
|
||||||
|
"object": {
|
||||||
|
"end": 122,
|
||||||
|
"name": "r2",
|
||||||
|
"start": 120,
|
||||||
|
"type": "Identifier",
|
||||||
|
"type": "Identifier"
|
||||||
|
},
|
||||||
|
"property": {
|
||||||
|
"end": 124,
|
||||||
|
"raw": "4",
|
||||||
|
"start": 123,
|
||||||
|
"type": "Literal",
|
||||||
|
"type": "Literal",
|
||||||
|
"value": 4
|
||||||
|
},
|
||||||
|
"start": 120,
|
||||||
|
"type": "MemberExpression",
|
||||||
|
"type": "MemberExpression"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"end": 128,
|
||||||
|
"raw": "4",
|
||||||
|
"start": 127,
|
||||||
|
"type": "Literal",
|
||||||
|
"type": "Literal",
|
||||||
|
"value": 4
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"end": 137,
|
||||||
|
"raw": "0.00001",
|
||||||
|
"start": 130,
|
||||||
|
"type": "Literal",
|
||||||
|
"type": "Literal",
|
||||||
|
"value": 0.00001
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"end": 165,
|
||||||
|
"raw": "\"last element is included\"",
|
||||||
|
"start": 139,
|
||||||
|
"type": "Literal",
|
||||||
|
"type": "Literal",
|
||||||
|
"value": "last element is included"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"callee": {
|
||||||
|
"end": 119,
|
||||||
|
"name": "assertEqual",
|
||||||
|
"start": 108,
|
||||||
|
"type": "Identifier"
|
||||||
|
},
|
||||||
|
"end": 166,
|
||||||
|
"optional": false,
|
||||||
|
"start": 108,
|
||||||
|
"type": "CallExpression",
|
||||||
|
"type": "CallExpression"
|
||||||
|
},
|
||||||
|
"start": 108,
|
||||||
|
"type": "ExpressionStatement",
|
||||||
|
"type": "ExpressionStatement"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"declarations": [
|
||||||
|
{
|
||||||
|
"end": 188,
|
||||||
|
"id": {
|
||||||
|
"end": 172,
|
||||||
|
"name": "five",
|
||||||
|
"start": 168,
|
||||||
|
"type": "Identifier"
|
||||||
|
},
|
||||||
|
"init": {
|
||||||
|
"arguments": [
|
||||||
|
{
|
||||||
|
"end": 187,
|
||||||
|
"left": {
|
||||||
|
"end": 183,
|
||||||
|
"name": "four",
|
||||||
|
"start": 179,
|
||||||
|
"type": "Identifier",
|
||||||
|
"type": "Identifier"
|
||||||
|
},
|
||||||
|
"operator": "+",
|
||||||
|
"right": {
|
||||||
|
"end": 187,
|
||||||
|
"raw": "1",
|
||||||
|
"start": 186,
|
||||||
|
"type": "Literal",
|
||||||
|
"type": "Literal",
|
||||||
|
"value": 1
|
||||||
|
},
|
||||||
|
"start": 179,
|
||||||
|
"type": "BinaryExpression",
|
||||||
|
"type": "BinaryExpression"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"callee": {
|
||||||
|
"end": 178,
|
||||||
|
"name": "int",
|
||||||
|
"start": 175,
|
||||||
|
"type": "Identifier"
|
||||||
|
},
|
||||||
|
"end": 188,
|
||||||
|
"optional": false,
|
||||||
|
"start": 175,
|
||||||
|
"type": "CallExpression",
|
||||||
|
"type": "CallExpression"
|
||||||
|
},
|
||||||
|
"start": 168,
|
||||||
|
"type": "VariableDeclarator"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"end": 188,
|
||||||
|
"kind": "const",
|
||||||
|
"start": 168,
|
||||||
|
"type": "VariableDeclaration",
|
||||||
|
"type": "VariableDeclaration"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"declarations": [
|
||||||
|
{
|
||||||
|
"end": 206,
|
||||||
|
"id": {
|
||||||
|
"end": 191,
|
||||||
|
"name": "r3",
|
||||||
|
"start": 189,
|
||||||
|
"type": "Identifier"
|
||||||
|
},
|
||||||
|
"init": {
|
||||||
|
"end": 206,
|
||||||
|
"endElement": {
|
||||||
|
"end": 205,
|
||||||
|
"name": "five",
|
||||||
|
"start": 201,
|
||||||
|
"type": "Identifier",
|
||||||
|
"type": "Identifier"
|
||||||
|
},
|
||||||
|
"endInclusive": true,
|
||||||
|
"start": 194,
|
||||||
|
"startElement": {
|
||||||
|
"end": 199,
|
||||||
|
"name": "zero",
|
||||||
|
"start": 195,
|
||||||
|
"type": "Identifier",
|
||||||
|
"type": "Identifier"
|
||||||
|
},
|
||||||
|
"type": "ArrayRangeExpression",
|
||||||
|
"type": "ArrayRangeExpression"
|
||||||
|
},
|
||||||
|
"start": 189,
|
||||||
|
"type": "VariableDeclarator"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"end": 206,
|
||||||
|
"kind": "const",
|
||||||
|
"start": 189,
|
||||||
|
"type": "VariableDeclaration",
|
||||||
|
"type": "VariableDeclaration"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"end": 275,
|
||||||
|
"expression": {
|
||||||
|
"arguments": [
|
||||||
|
{
|
||||||
|
"computed": false,
|
||||||
|
"end": 224,
|
||||||
|
"object": {
|
||||||
|
"end": 221,
|
||||||
|
"name": "r3",
|
||||||
|
"start": 219,
|
||||||
|
"type": "Identifier",
|
||||||
|
"type": "Identifier"
|
||||||
|
},
|
||||||
|
"property": {
|
||||||
|
"end": 223,
|
||||||
|
"raw": "4",
|
||||||
|
"start": 222,
|
||||||
|
"type": "Literal",
|
||||||
|
"type": "Literal",
|
||||||
|
"value": 4
|
||||||
|
},
|
||||||
|
"start": 219,
|
||||||
|
"type": "MemberExpression",
|
||||||
|
"type": "MemberExpression"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"end": 227,
|
||||||
|
"raw": "4",
|
||||||
|
"start": 226,
|
||||||
|
"type": "Literal",
|
||||||
|
"type": "Literal",
|
||||||
|
"value": 4
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"end": 236,
|
||||||
|
"raw": "0.00001",
|
||||||
|
"start": 229,
|
||||||
|
"type": "Literal",
|
||||||
|
"type": "Literal",
|
||||||
|
"value": 0.00001
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"end": 274,
|
||||||
|
"raw": "\"second-to-last element is included\"",
|
||||||
|
"start": 238,
|
||||||
|
"type": "Literal",
|
||||||
|
"type": "Literal",
|
||||||
|
"value": "second-to-last element is included"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"callee": {
|
||||||
|
"end": 218,
|
||||||
|
"name": "assertEqual",
|
||||||
|
"start": 207,
|
||||||
|
"type": "Identifier"
|
||||||
|
},
|
||||||
|
"end": 275,
|
||||||
|
"optional": false,
|
||||||
|
"start": 207,
|
||||||
|
"type": "CallExpression",
|
||||||
|
"type": "CallExpression"
|
||||||
|
},
|
||||||
|
"start": 207,
|
||||||
|
"type": "ExpressionStatement",
|
||||||
|
"type": "ExpressionStatement"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"end": 334,
|
||||||
|
"expression": {
|
||||||
|
"arguments": [
|
||||||
|
{
|
||||||
|
"computed": false,
|
||||||
|
"end": 293,
|
||||||
|
"object": {
|
||||||
|
"end": 290,
|
||||||
|
"name": "r3",
|
||||||
|
"start": 288,
|
||||||
|
"type": "Identifier",
|
||||||
|
"type": "Identifier"
|
||||||
|
},
|
||||||
|
"property": {
|
||||||
|
"end": 292,
|
||||||
|
"raw": "5",
|
||||||
|
"start": 291,
|
||||||
|
"type": "Literal",
|
||||||
|
"type": "Literal",
|
||||||
|
"value": 5
|
||||||
|
},
|
||||||
|
"start": 288,
|
||||||
|
"type": "MemberExpression",
|
||||||
|
"type": "MemberExpression"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"end": 296,
|
||||||
|
"raw": "5",
|
||||||
|
"start": 295,
|
||||||
|
"type": "Literal",
|
||||||
|
"type": "Literal",
|
||||||
|
"value": 5
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"end": 305,
|
||||||
|
"raw": "0.00001",
|
||||||
|
"start": 298,
|
||||||
|
"type": "Literal",
|
||||||
|
"type": "Literal",
|
||||||
|
"value": 0.00001
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"end": 333,
|
||||||
|
"raw": "\"last element is included\"",
|
||||||
|
"start": 307,
|
||||||
|
"type": "Literal",
|
||||||
|
"type": "Literal",
|
||||||
|
"value": "last element is included"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"callee": {
|
||||||
|
"end": 287,
|
||||||
|
"name": "assertEqual",
|
||||||
|
"start": 276,
|
||||||
|
"type": "Identifier"
|
||||||
|
},
|
||||||
|
"end": 334,
|
||||||
|
"optional": false,
|
||||||
|
"start": 276,
|
||||||
|
"type": "CallExpression",
|
||||||
|
"type": "CallExpression"
|
||||||
|
},
|
||||||
|
"start": 276,
|
||||||
|
"type": "ExpressionStatement",
|
||||||
|
"type": "ExpressionStatement"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"declarations": [
|
||||||
|
{
|
||||||
|
"end": 373,
|
||||||
|
"id": {
|
||||||
|
"end": 338,
|
||||||
|
"name": "r4",
|
||||||
|
"start": 336,
|
||||||
|
"type": "Identifier"
|
||||||
|
},
|
||||||
|
"init": {
|
||||||
|
"end": 373,
|
||||||
|
"endElement": {
|
||||||
|
"arguments": [
|
||||||
|
{
|
||||||
|
"end": 371,
|
||||||
|
"left": {
|
||||||
|
"end": 367,
|
||||||
|
"name": "five",
|
||||||
|
"start": 363,
|
||||||
|
"type": "Identifier",
|
||||||
|
"type": "Identifier"
|
||||||
|
},
|
||||||
|
"operator": "-",
|
||||||
|
"right": {
|
||||||
|
"end": 371,
|
||||||
|
"raw": "1",
|
||||||
|
"start": 370,
|
||||||
|
"type": "Literal",
|
||||||
|
"type": "Literal",
|
||||||
|
"value": 1
|
||||||
|
},
|
||||||
|
"start": 363,
|
||||||
|
"type": "BinaryExpression",
|
||||||
|
"type": "BinaryExpression"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"callee": {
|
||||||
|
"end": 362,
|
||||||
|
"name": "int",
|
||||||
|
"start": 359,
|
||||||
|
"type": "Identifier"
|
||||||
|
},
|
||||||
|
"end": 372,
|
||||||
|
"optional": false,
|
||||||
|
"start": 359,
|
||||||
|
"type": "CallExpression",
|
||||||
|
"type": "CallExpression"
|
||||||
|
},
|
||||||
|
"endInclusive": true,
|
||||||
|
"start": 341,
|
||||||
|
"startElement": {
|
||||||
|
"arguments": [
|
||||||
|
{
|
||||||
|
"end": 354,
|
||||||
|
"left": {
|
||||||
|
"end": 350,
|
||||||
|
"name": "zero",
|
||||||
|
"start": 346,
|
||||||
|
"type": "Identifier",
|
||||||
|
"type": "Identifier"
|
||||||
|
},
|
||||||
|
"operator": "+",
|
||||||
|
"right": {
|
||||||
|
"end": 354,
|
||||||
|
"raw": "1",
|
||||||
|
"start": 353,
|
||||||
|
"type": "Literal",
|
||||||
|
"type": "Literal",
|
||||||
|
"value": 1
|
||||||
|
},
|
||||||
|
"start": 346,
|
||||||
|
"type": "BinaryExpression",
|
||||||
|
"type": "BinaryExpression"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"callee": {
|
||||||
|
"end": 345,
|
||||||
|
"name": "int",
|
||||||
|
"start": 342,
|
||||||
|
"type": "Identifier"
|
||||||
|
},
|
||||||
|
"end": 355,
|
||||||
|
"optional": false,
|
||||||
|
"start": 342,
|
||||||
|
"type": "CallExpression",
|
||||||
|
"type": "CallExpression"
|
||||||
|
},
|
||||||
|
"type": "ArrayRangeExpression",
|
||||||
|
"type": "ArrayRangeExpression"
|
||||||
|
},
|
||||||
|
"start": 336,
|
||||||
|
"type": "VariableDeclarator"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"end": 373,
|
||||||
|
"kind": "const",
|
||||||
|
"start": 336,
|
||||||
|
"type": "VariableDeclaration",
|
||||||
|
"type": "VariableDeclaration"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"end": 426,
|
||||||
|
"expression": {
|
||||||
|
"arguments": [
|
||||||
|
{
|
||||||
|
"computed": false,
|
||||||
|
"end": 391,
|
||||||
|
"object": {
|
||||||
|
"end": 388,
|
||||||
|
"name": "r4",
|
||||||
|
"start": 386,
|
||||||
|
"type": "Identifier",
|
||||||
|
"type": "Identifier"
|
||||||
|
},
|
||||||
|
"property": {
|
||||||
|
"end": 390,
|
||||||
|
"raw": "0",
|
||||||
|
"start": 389,
|
||||||
|
"type": "Literal",
|
||||||
|
"type": "Literal",
|
||||||
|
"value": 0
|
||||||
|
},
|
||||||
|
"start": 386,
|
||||||
|
"type": "MemberExpression",
|
||||||
|
"type": "MemberExpression"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"end": 394,
|
||||||
|
"raw": "1",
|
||||||
|
"start": 393,
|
||||||
|
"type": "Literal",
|
||||||
|
"type": "Literal",
|
||||||
|
"value": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"end": 403,
|
||||||
|
"raw": "0.00001",
|
||||||
|
"start": 396,
|
||||||
|
"type": "Literal",
|
||||||
|
"type": "Literal",
|
||||||
|
"value": 0.00001
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"end": 425,
|
||||||
|
"raw": "\"first element is 1\"",
|
||||||
|
"start": 405,
|
||||||
|
"type": "Literal",
|
||||||
|
"type": "Literal",
|
||||||
|
"value": "first element is 1"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"callee": {
|
||||||
|
"end": 385,
|
||||||
|
"name": "assertEqual",
|
||||||
|
"start": 374,
|
||||||
|
"type": "Identifier"
|
||||||
|
},
|
||||||
|
"end": 426,
|
||||||
|
"optional": false,
|
||||||
|
"start": 374,
|
||||||
|
"type": "CallExpression",
|
||||||
|
"type": "CallExpression"
|
||||||
|
},
|
||||||
|
"start": 374,
|
||||||
|
"type": "ExpressionStatement",
|
||||||
|
"type": "ExpressionStatement"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"end": 488,
|
||||||
|
"expression": {
|
||||||
|
"arguments": [
|
||||||
|
{
|
||||||
|
"computed": false,
|
||||||
|
"end": 444,
|
||||||
|
"object": {
|
||||||
|
"end": 441,
|
||||||
|
"name": "r4",
|
||||||
|
"start": 439,
|
||||||
|
"type": "Identifier",
|
||||||
|
"type": "Identifier"
|
||||||
|
},
|
||||||
|
"property": {
|
||||||
|
"end": 443,
|
||||||
|
"raw": "2",
|
||||||
|
"start": 442,
|
||||||
|
"type": "Literal",
|
||||||
|
"type": "Literal",
|
||||||
|
"value": 2
|
||||||
|
},
|
||||||
|
"start": 439,
|
||||||
|
"type": "MemberExpression",
|
||||||
|
"type": "MemberExpression"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"end": 447,
|
||||||
|
"raw": "3",
|
||||||
|
"start": 446,
|
||||||
|
"type": "Literal",
|
||||||
|
"type": "Literal",
|
||||||
|
"value": 3
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"end": 456,
|
||||||
|
"raw": "0.00001",
|
||||||
|
"start": 449,
|
||||||
|
"type": "Literal",
|
||||||
|
"type": "Literal",
|
||||||
|
"value": 0.00001
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"end": 487,
|
||||||
|
"raw": "\"second-to-last element is 3\"",
|
||||||
|
"start": 458,
|
||||||
|
"type": "Literal",
|
||||||
|
"type": "Literal",
|
||||||
|
"value": "second-to-last element is 3"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"callee": {
|
||||||
|
"end": 438,
|
||||||
|
"name": "assertEqual",
|
||||||
|
"start": 427,
|
||||||
|
"type": "Identifier"
|
||||||
|
},
|
||||||
|
"end": 488,
|
||||||
|
"optional": false,
|
||||||
|
"start": 427,
|
||||||
|
"type": "CallExpression",
|
||||||
|
"type": "CallExpression"
|
||||||
|
},
|
||||||
|
"start": 427,
|
||||||
|
"type": "ExpressionStatement",
|
||||||
|
"type": "ExpressionStatement"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"end": 540,
|
||||||
|
"expression": {
|
||||||
|
"arguments": [
|
||||||
|
{
|
||||||
|
"computed": false,
|
||||||
|
"end": 506,
|
||||||
|
"object": {
|
||||||
|
"end": 503,
|
||||||
|
"name": "r4",
|
||||||
|
"start": 501,
|
||||||
|
"type": "Identifier",
|
||||||
|
"type": "Identifier"
|
||||||
|
},
|
||||||
|
"property": {
|
||||||
|
"end": 505,
|
||||||
|
"raw": "3",
|
||||||
|
"start": 504,
|
||||||
|
"type": "Literal",
|
||||||
|
"type": "Literal",
|
||||||
|
"value": 3
|
||||||
|
},
|
||||||
|
"start": 501,
|
||||||
|
"type": "MemberExpression",
|
||||||
|
"type": "MemberExpression"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"end": 509,
|
||||||
|
"raw": "4",
|
||||||
|
"start": 508,
|
||||||
|
"type": "Literal",
|
||||||
|
"type": "Literal",
|
||||||
|
"value": 4
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"end": 518,
|
||||||
|
"raw": "0.00001",
|
||||||
|
"start": 511,
|
||||||
|
"type": "Literal",
|
||||||
|
"type": "Literal",
|
||||||
|
"value": 0.00001
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"end": 539,
|
||||||
|
"raw": "\"last element is 4\"",
|
||||||
|
"start": 520,
|
||||||
|
"type": "Literal",
|
||||||
|
"type": "Literal",
|
||||||
|
"value": "last element is 4"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"callee": {
|
||||||
|
"end": 500,
|
||||||
|
"name": "assertEqual",
|
||||||
|
"start": 489,
|
||||||
|
"type": "Identifier"
|
||||||
|
},
|
||||||
|
"end": 540,
|
||||||
|
"optional": false,
|
||||||
|
"start": 489,
|
||||||
|
"type": "CallExpression",
|
||||||
|
"type": "CallExpression"
|
||||||
|
},
|
||||||
|
"start": 489,
|
||||||
|
"type": "ExpressionStatement",
|
||||||
|
"type": "ExpressionStatement"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"end": 541,
|
||||||
|
"nonCodeMeta": {
|
||||||
|
"nonCodeNodes": {
|
||||||
|
"1": [
|
||||||
|
{
|
||||||
|
"end": 72,
|
||||||
|
"start": 70,
|
||||||
|
"type": "NonCodeNode",
|
||||||
|
"value": {
|
||||||
|
"type": "newLine"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"5": [
|
||||||
|
{
|
||||||
|
"end": 168,
|
||||||
|
"start": 166,
|
||||||
|
"type": "NonCodeNode",
|
||||||
|
"value": {
|
||||||
|
"type": "newLine"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"9": [
|
||||||
|
{
|
||||||
|
"end": 336,
|
||||||
|
"start": 334,
|
||||||
|
"type": "NonCodeNode",
|
||||||
|
"value": {
|
||||||
|
"type": "newLine"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"startNodes": []
|
||||||
|
},
|
||||||
|
"start": 0
|
||||||
|
}
|
||||||
|
}
|
155
src/wasm-lib/kcl/tests/array_range_expr/program_memory.snap
Normal file
155
src/wasm-lib/kcl/tests/array_range_expr/program_memory.snap
Normal file
@ -0,0 +1,155 @@
|
|||||||
|
---
|
||||||
|
source: kcl/src/simulation_tests.rs
|
||||||
|
description: Program memory after executing array_range_expr.kcl
|
||||||
|
snapshot_kind: text
|
||||||
|
---
|
||||||
|
{
|
||||||
|
"environments": [
|
||||||
|
{
|
||||||
|
"bindings": {
|
||||||
|
"HALF_TURN": {
|
||||||
|
"type": "UserVal",
|
||||||
|
"type": "UserVal",
|
||||||
|
"value": 180,
|
||||||
|
"__meta": []
|
||||||
|
},
|
||||||
|
"QUARTER_TURN": {
|
||||||
|
"type": "UserVal",
|
||||||
|
"type": "UserVal",
|
||||||
|
"value": 90,
|
||||||
|
"__meta": []
|
||||||
|
},
|
||||||
|
"THREE_QUARTER_TURN": {
|
||||||
|
"type": "UserVal",
|
||||||
|
"type": "UserVal",
|
||||||
|
"value": 270,
|
||||||
|
"__meta": []
|
||||||
|
},
|
||||||
|
"ZERO": {
|
||||||
|
"type": "UserVal",
|
||||||
|
"type": "UserVal",
|
||||||
|
"value": 0,
|
||||||
|
"__meta": []
|
||||||
|
},
|
||||||
|
"five": {
|
||||||
|
"type": "UserVal",
|
||||||
|
"type": "UserVal",
|
||||||
|
"value": 5,
|
||||||
|
"__meta": [
|
||||||
|
{
|
||||||
|
"sourceRange": [
|
||||||
|
175,
|
||||||
|
188
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"four": {
|
||||||
|
"type": "UserVal",
|
||||||
|
"type": "UserVal",
|
||||||
|
"value": 4,
|
||||||
|
"__meta": [
|
||||||
|
{
|
||||||
|
"sourceRange": [
|
||||||
|
79,
|
||||||
|
80
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"r1": {
|
||||||
|
"type": "UserVal",
|
||||||
|
"type": "UserVal",
|
||||||
|
"value": [
|
||||||
|
0,
|
||||||
|
1,
|
||||||
|
2,
|
||||||
|
3,
|
||||||
|
4
|
||||||
|
],
|
||||||
|
"__meta": [
|
||||||
|
{
|
||||||
|
"sourceRange": [
|
||||||
|
5,
|
||||||
|
11
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"r2": {
|
||||||
|
"type": "UserVal",
|
||||||
|
"type": "UserVal",
|
||||||
|
"value": [
|
||||||
|
0,
|
||||||
|
1,
|
||||||
|
2,
|
||||||
|
3,
|
||||||
|
4
|
||||||
|
],
|
||||||
|
"__meta": [
|
||||||
|
{
|
||||||
|
"sourceRange": [
|
||||||
|
95,
|
||||||
|
107
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"r3": {
|
||||||
|
"type": "UserVal",
|
||||||
|
"type": "UserVal",
|
||||||
|
"value": [
|
||||||
|
0,
|
||||||
|
1,
|
||||||
|
2,
|
||||||
|
3,
|
||||||
|
4,
|
||||||
|
5
|
||||||
|
],
|
||||||
|
"__meta": [
|
||||||
|
{
|
||||||
|
"sourceRange": [
|
||||||
|
194,
|
||||||
|
206
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"r4": {
|
||||||
|
"type": "UserVal",
|
||||||
|
"type": "UserVal",
|
||||||
|
"value": [
|
||||||
|
1,
|
||||||
|
2,
|
||||||
|
3,
|
||||||
|
4
|
||||||
|
],
|
||||||
|
"__meta": [
|
||||||
|
{
|
||||||
|
"sourceRange": [
|
||||||
|
341,
|
||||||
|
373
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"zero": {
|
||||||
|
"type": "UserVal",
|
||||||
|
"type": "UserVal",
|
||||||
|
"value": 0,
|
||||||
|
"__meta": [
|
||||||
|
{
|
||||||
|
"sourceRange": [
|
||||||
|
88,
|
||||||
|
89
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"parent": null
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"currentEnv": 0,
|
||||||
|
"return": null
|
||||||
|
}
|
1209
src/wasm-lib/kcl/tests/array_range_expr/tokens.snap
Normal file
1209
src/wasm-lib/kcl/tests/array_range_expr/tokens.snap
Normal file
File diff suppressed because it is too large
Load Diff
152
src/wasm-lib/kcl/tests/array_range_negative_expr/ast.snap
Normal file
152
src/wasm-lib/kcl/tests/array_range_negative_expr/ast.snap
Normal file
@ -0,0 +1,152 @@
|
|||||||
|
---
|
||||||
|
source: kcl/src/simulation_tests.rs
|
||||||
|
description: Result of parsing array_range_negative_expr.kcl
|
||||||
|
snapshot_kind: text
|
||||||
|
---
|
||||||
|
{
|
||||||
|
"Ok": {
|
||||||
|
"body": [
|
||||||
|
{
|
||||||
|
"declarations": [
|
||||||
|
{
|
||||||
|
"end": 19,
|
||||||
|
"id": {
|
||||||
|
"end": 2,
|
||||||
|
"name": "xs",
|
||||||
|
"start": 0,
|
||||||
|
"type": "Identifier"
|
||||||
|
},
|
||||||
|
"init": {
|
||||||
|
"end": 19,
|
||||||
|
"endElement": {
|
||||||
|
"end": 18,
|
||||||
|
"raw": "5",
|
||||||
|
"start": 17,
|
||||||
|
"type": "Literal",
|
||||||
|
"type": "Literal",
|
||||||
|
"value": 5
|
||||||
|
},
|
||||||
|
"endInclusive": true,
|
||||||
|
"start": 5,
|
||||||
|
"startElement": {
|
||||||
|
"arguments": [
|
||||||
|
{
|
||||||
|
"argument": {
|
||||||
|
"end": 12,
|
||||||
|
"raw": "5",
|
||||||
|
"start": 11,
|
||||||
|
"type": "Literal",
|
||||||
|
"type": "Literal",
|
||||||
|
"value": 5
|
||||||
|
},
|
||||||
|
"end": 12,
|
||||||
|
"operator": "-",
|
||||||
|
"start": 10,
|
||||||
|
"type": "UnaryExpression",
|
||||||
|
"type": "UnaryExpression"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"callee": {
|
||||||
|
"end": 9,
|
||||||
|
"name": "int",
|
||||||
|
"start": 6,
|
||||||
|
"type": "Identifier"
|
||||||
|
},
|
||||||
|
"end": 13,
|
||||||
|
"optional": false,
|
||||||
|
"start": 6,
|
||||||
|
"type": "CallExpression",
|
||||||
|
"type": "CallExpression"
|
||||||
|
},
|
||||||
|
"type": "ArrayRangeExpression",
|
||||||
|
"type": "ArrayRangeExpression"
|
||||||
|
},
|
||||||
|
"start": 0,
|
||||||
|
"type": "VariableDeclarator"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"end": 19,
|
||||||
|
"kind": "const",
|
||||||
|
"start": 0,
|
||||||
|
"type": "VariableDeclaration",
|
||||||
|
"type": "VariableDeclaration"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"end": 72,
|
||||||
|
"expression": {
|
||||||
|
"arguments": [
|
||||||
|
{
|
||||||
|
"computed": false,
|
||||||
|
"end": 37,
|
||||||
|
"object": {
|
||||||
|
"end": 34,
|
||||||
|
"name": "xs",
|
||||||
|
"start": 32,
|
||||||
|
"type": "Identifier",
|
||||||
|
"type": "Identifier"
|
||||||
|
},
|
||||||
|
"property": {
|
||||||
|
"end": 36,
|
||||||
|
"raw": "0",
|
||||||
|
"start": 35,
|
||||||
|
"type": "Literal",
|
||||||
|
"type": "Literal",
|
||||||
|
"value": 0
|
||||||
|
},
|
||||||
|
"start": 32,
|
||||||
|
"type": "MemberExpression",
|
||||||
|
"type": "MemberExpression"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"argument": {
|
||||||
|
"end": 41,
|
||||||
|
"raw": "5",
|
||||||
|
"start": 40,
|
||||||
|
"type": "Literal",
|
||||||
|
"type": "Literal",
|
||||||
|
"value": 5
|
||||||
|
},
|
||||||
|
"end": 41,
|
||||||
|
"operator": "-",
|
||||||
|
"start": 39,
|
||||||
|
"type": "UnaryExpression",
|
||||||
|
"type": "UnaryExpression"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"end": 48,
|
||||||
|
"raw": "0.001",
|
||||||
|
"start": 43,
|
||||||
|
"type": "Literal",
|
||||||
|
"type": "Literal",
|
||||||
|
"value": 0.001
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"end": 71,
|
||||||
|
"raw": "\"first element is -5\"",
|
||||||
|
"start": 50,
|
||||||
|
"type": "Literal",
|
||||||
|
"type": "Literal",
|
||||||
|
"value": "first element is -5"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"callee": {
|
||||||
|
"end": 31,
|
||||||
|
"name": "assertEqual",
|
||||||
|
"start": 20,
|
||||||
|
"type": "Identifier"
|
||||||
|
},
|
||||||
|
"end": 72,
|
||||||
|
"optional": false,
|
||||||
|
"start": 20,
|
||||||
|
"type": "CallExpression",
|
||||||
|
"type": "CallExpression"
|
||||||
|
},
|
||||||
|
"start": 20,
|
||||||
|
"type": "ExpressionStatement",
|
||||||
|
"type": "ExpressionStatement"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"end": 73,
|
||||||
|
"start": 0
|
||||||
|
}
|
||||||
|
}
|
@ -1,2 +1,2 @@
|
|||||||
xs = [int(-5)..5]
|
xs = [int(-5) .. 5]
|
||||||
assertEqual(xs[0], -5, 0.001, "first element is -5")
|
assertEqual(xs[0], -5, 0.001, "first element is -5")
|
@ -0,0 +1,65 @@
|
|||||||
|
---
|
||||||
|
source: kcl/src/simulation_tests.rs
|
||||||
|
description: Program memory after executing array_range_negative_expr.kcl
|
||||||
|
snapshot_kind: text
|
||||||
|
---
|
||||||
|
{
|
||||||
|
"environments": [
|
||||||
|
{
|
||||||
|
"bindings": {
|
||||||
|
"HALF_TURN": {
|
||||||
|
"type": "UserVal",
|
||||||
|
"type": "UserVal",
|
||||||
|
"value": 180,
|
||||||
|
"__meta": []
|
||||||
|
},
|
||||||
|
"QUARTER_TURN": {
|
||||||
|
"type": "UserVal",
|
||||||
|
"type": "UserVal",
|
||||||
|
"value": 90,
|
||||||
|
"__meta": []
|
||||||
|
},
|
||||||
|
"THREE_QUARTER_TURN": {
|
||||||
|
"type": "UserVal",
|
||||||
|
"type": "UserVal",
|
||||||
|
"value": 270,
|
||||||
|
"__meta": []
|
||||||
|
},
|
||||||
|
"ZERO": {
|
||||||
|
"type": "UserVal",
|
||||||
|
"type": "UserVal",
|
||||||
|
"value": 0,
|
||||||
|
"__meta": []
|
||||||
|
},
|
||||||
|
"xs": {
|
||||||
|
"type": "UserVal",
|
||||||
|
"type": "UserVal",
|
||||||
|
"value": [
|
||||||
|
-5,
|
||||||
|
-4,
|
||||||
|
-3,
|
||||||
|
-2,
|
||||||
|
-1,
|
||||||
|
0,
|
||||||
|
1,
|
||||||
|
2,
|
||||||
|
3,
|
||||||
|
4,
|
||||||
|
5
|
||||||
|
],
|
||||||
|
"__meta": [
|
||||||
|
{
|
||||||
|
"sourceRange": [
|
||||||
|
5,
|
||||||
|
19
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"parent": null
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"currentEnv": 0,
|
||||||
|
"return": null
|
||||||
|
}
|
213
src/wasm-lib/kcl/tests/array_range_negative_expr/tokens.snap
Normal file
213
src/wasm-lib/kcl/tests/array_range_negative_expr/tokens.snap
Normal file
@ -0,0 +1,213 @@
|
|||||||
|
---
|
||||||
|
source: kcl/src/simulation_tests.rs
|
||||||
|
description: Result of tokenizing array_range_negative_expr.kcl
|
||||||
|
snapshot_kind: text
|
||||||
|
---
|
||||||
|
{
|
||||||
|
"Ok": [
|
||||||
|
{
|
||||||
|
"type": "word",
|
||||||
|
"start": 0,
|
||||||
|
"end": 2,
|
||||||
|
"value": "xs"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "whitespace",
|
||||||
|
"start": 2,
|
||||||
|
"end": 3,
|
||||||
|
"value": " "
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "operator",
|
||||||
|
"start": 3,
|
||||||
|
"end": 4,
|
||||||
|
"value": "="
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "whitespace",
|
||||||
|
"start": 4,
|
||||||
|
"end": 5,
|
||||||
|
"value": " "
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "brace",
|
||||||
|
"start": 5,
|
||||||
|
"end": 6,
|
||||||
|
"value": "["
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "word",
|
||||||
|
"start": 6,
|
||||||
|
"end": 9,
|
||||||
|
"value": "int"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "brace",
|
||||||
|
"start": 9,
|
||||||
|
"end": 10,
|
||||||
|
"value": "("
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "operator",
|
||||||
|
"start": 10,
|
||||||
|
"end": 11,
|
||||||
|
"value": "-"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "number",
|
||||||
|
"start": 11,
|
||||||
|
"end": 12,
|
||||||
|
"value": "5"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "brace",
|
||||||
|
"start": 12,
|
||||||
|
"end": 13,
|
||||||
|
"value": ")"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "whitespace",
|
||||||
|
"start": 13,
|
||||||
|
"end": 14,
|
||||||
|
"value": " "
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "doublePeriod",
|
||||||
|
"start": 14,
|
||||||
|
"end": 16,
|
||||||
|
"value": ".."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "whitespace",
|
||||||
|
"start": 16,
|
||||||
|
"end": 17,
|
||||||
|
"value": " "
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "number",
|
||||||
|
"start": 17,
|
||||||
|
"end": 18,
|
||||||
|
"value": "5"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "brace",
|
||||||
|
"start": 18,
|
||||||
|
"end": 19,
|
||||||
|
"value": "]"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "whitespace",
|
||||||
|
"start": 19,
|
||||||
|
"end": 20,
|
||||||
|
"value": "\n"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "word",
|
||||||
|
"start": 20,
|
||||||
|
"end": 31,
|
||||||
|
"value": "assertEqual"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "brace",
|
||||||
|
"start": 31,
|
||||||
|
"end": 32,
|
||||||
|
"value": "("
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "word",
|
||||||
|
"start": 32,
|
||||||
|
"end": 34,
|
||||||
|
"value": "xs"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "brace",
|
||||||
|
"start": 34,
|
||||||
|
"end": 35,
|
||||||
|
"value": "["
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "number",
|
||||||
|
"start": 35,
|
||||||
|
"end": 36,
|
||||||
|
"value": "0"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "brace",
|
||||||
|
"start": 36,
|
||||||
|
"end": 37,
|
||||||
|
"value": "]"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "comma",
|
||||||
|
"start": 37,
|
||||||
|
"end": 38,
|
||||||
|
"value": ","
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "whitespace",
|
||||||
|
"start": 38,
|
||||||
|
"end": 39,
|
||||||
|
"value": " "
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "operator",
|
||||||
|
"start": 39,
|
||||||
|
"end": 40,
|
||||||
|
"value": "-"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "number",
|
||||||
|
"start": 40,
|
||||||
|
"end": 41,
|
||||||
|
"value": "5"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "comma",
|
||||||
|
"start": 41,
|
||||||
|
"end": 42,
|
||||||
|
"value": ","
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "whitespace",
|
||||||
|
"start": 42,
|
||||||
|
"end": 43,
|
||||||
|
"value": " "
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "number",
|
||||||
|
"start": 43,
|
||||||
|
"end": 48,
|
||||||
|
"value": "0.001"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "comma",
|
||||||
|
"start": 48,
|
||||||
|
"end": 49,
|
||||||
|
"value": ","
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "whitespace",
|
||||||
|
"start": 49,
|
||||||
|
"end": 50,
|
||||||
|
"value": " "
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "string",
|
||||||
|
"start": 50,
|
||||||
|
"end": 71,
|
||||||
|
"value": "\"first element is -5\""
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "brace",
|
||||||
|
"start": 71,
|
||||||
|
"end": 72,
|
||||||
|
"value": ")"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "whitespace",
|
||||||
|
"start": 72,
|
||||||
|
"end": 73,
|
||||||
|
"value": "\n"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
659
src/wasm-lib/kcl/tests/comparisons/ast.snap
Normal file
659
src/wasm-lib/kcl/tests/comparisons/ast.snap
Normal file
@ -0,0 +1,659 @@
|
|||||||
|
---
|
||||||
|
source: kcl/src/simulation_tests.rs
|
||||||
|
description: Result of parsing comparisons.kcl
|
||||||
|
snapshot_kind: text
|
||||||
|
---
|
||||||
|
{
|
||||||
|
"Ok": {
|
||||||
|
"body": [
|
||||||
|
{
|
||||||
|
"end": 26,
|
||||||
|
"expression": {
|
||||||
|
"arguments": [
|
||||||
|
{
|
||||||
|
"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"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"end": 25,
|
||||||
|
"raw": "\"equality\"",
|
||||||
|
"start": 15,
|
||||||
|
"type": "Literal",
|
||||||
|
"type": "Literal",
|
||||||
|
"value": "equality"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"callee": {
|
||||||
|
"end": 6,
|
||||||
|
"name": "assert",
|
||||||
|
"start": 0,
|
||||||
|
"type": "Identifier"
|
||||||
|
},
|
||||||
|
"end": 26,
|
||||||
|
"optional": false,
|
||||||
|
"start": 0,
|
||||||
|
"type": "CallExpression",
|
||||||
|
"type": "CallExpression"
|
||||||
|
},
|
||||||
|
"start": 0,
|
||||||
|
"type": "ExpressionStatement",
|
||||||
|
"type": "ExpressionStatement"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"end": 67,
|
||||||
|
"expression": {
|
||||||
|
"arguments": [
|
||||||
|
{
|
||||||
|
"end": 44,
|
||||||
|
"left": {
|
||||||
|
"end": 37,
|
||||||
|
"raw": "3.0",
|
||||||
|
"start": 34,
|
||||||
|
"type": "Literal",
|
||||||
|
"type": "Literal",
|
||||||
|
"value": 3.0
|
||||||
|
},
|
||||||
|
"operator": "==",
|
||||||
|
"right": {
|
||||||
|
"end": 44,
|
||||||
|
"raw": "3.0",
|
||||||
|
"start": 41,
|
||||||
|
"type": "Literal",
|
||||||
|
"type": "Literal",
|
||||||
|
"value": 3.0
|
||||||
|
},
|
||||||
|
"start": 34,
|
||||||
|
"type": "BinaryExpression",
|
||||||
|
"type": "BinaryExpression"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"end": 66,
|
||||||
|
"raw": "\"equality of floats\"",
|
||||||
|
"start": 46,
|
||||||
|
"type": "Literal",
|
||||||
|
"type": "Literal",
|
||||||
|
"value": "equality of floats"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"callee": {
|
||||||
|
"end": 33,
|
||||||
|
"name": "assert",
|
||||||
|
"start": 27,
|
||||||
|
"type": "Identifier"
|
||||||
|
},
|
||||||
|
"end": 67,
|
||||||
|
"optional": false,
|
||||||
|
"start": 27,
|
||||||
|
"type": "CallExpression",
|
||||||
|
"type": "CallExpression"
|
||||||
|
},
|
||||||
|
"start": 27,
|
||||||
|
"type": "ExpressionStatement",
|
||||||
|
"type": "ExpressionStatement"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"end": 98,
|
||||||
|
"expression": {
|
||||||
|
"arguments": [
|
||||||
|
{
|
||||||
|
"end": 81,
|
||||||
|
"left": {
|
||||||
|
"end": 76,
|
||||||
|
"raw": "3",
|
||||||
|
"start": 75,
|
||||||
|
"type": "Literal",
|
||||||
|
"type": "Literal",
|
||||||
|
"value": 3
|
||||||
|
},
|
||||||
|
"operator": "!=",
|
||||||
|
"right": {
|
||||||
|
"end": 81,
|
||||||
|
"raw": "4",
|
||||||
|
"start": 80,
|
||||||
|
"type": "Literal",
|
||||||
|
"type": "Literal",
|
||||||
|
"value": 4
|
||||||
|
},
|
||||||
|
"start": 75,
|
||||||
|
"type": "BinaryExpression",
|
||||||
|
"type": "BinaryExpression"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"end": 97,
|
||||||
|
"raw": "\"non-equality\"",
|
||||||
|
"start": 83,
|
||||||
|
"type": "Literal",
|
||||||
|
"type": "Literal",
|
||||||
|
"value": "non-equality"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"callee": {
|
||||||
|
"end": 74,
|
||||||
|
"name": "assert",
|
||||||
|
"start": 68,
|
||||||
|
"type": "Identifier"
|
||||||
|
},
|
||||||
|
"end": 98,
|
||||||
|
"optional": false,
|
||||||
|
"start": 68,
|
||||||
|
"type": "CallExpression",
|
||||||
|
"type": "CallExpression"
|
||||||
|
},
|
||||||
|
"start": 68,
|
||||||
|
"type": "ExpressionStatement",
|
||||||
|
"type": "ExpressionStatement"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"end": 143,
|
||||||
|
"expression": {
|
||||||
|
"arguments": [
|
||||||
|
{
|
||||||
|
"end": 116,
|
||||||
|
"left": {
|
||||||
|
"end": 109,
|
||||||
|
"raw": "3.0",
|
||||||
|
"start": 106,
|
||||||
|
"type": "Literal",
|
||||||
|
"type": "Literal",
|
||||||
|
"value": 3.0
|
||||||
|
},
|
||||||
|
"operator": "!=",
|
||||||
|
"right": {
|
||||||
|
"end": 116,
|
||||||
|
"raw": "4.0",
|
||||||
|
"start": 113,
|
||||||
|
"type": "Literal",
|
||||||
|
"type": "Literal",
|
||||||
|
"value": 4.0
|
||||||
|
},
|
||||||
|
"start": 106,
|
||||||
|
"type": "BinaryExpression",
|
||||||
|
"type": "BinaryExpression"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"end": 142,
|
||||||
|
"raw": "\"non-equality of floats\"",
|
||||||
|
"start": 118,
|
||||||
|
"type": "Literal",
|
||||||
|
"type": "Literal",
|
||||||
|
"value": "non-equality of floats"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"callee": {
|
||||||
|
"end": 105,
|
||||||
|
"name": "assert",
|
||||||
|
"start": 99,
|
||||||
|
"type": "Identifier"
|
||||||
|
},
|
||||||
|
"end": 143,
|
||||||
|
"optional": false,
|
||||||
|
"start": 99,
|
||||||
|
"type": "CallExpression",
|
||||||
|
"type": "CallExpression"
|
||||||
|
},
|
||||||
|
"start": 99,
|
||||||
|
"type": "ExpressionStatement",
|
||||||
|
"type": "ExpressionStatement"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"end": 163,
|
||||||
|
"expression": {
|
||||||
|
"arguments": [
|
||||||
|
{
|
||||||
|
"end": 156,
|
||||||
|
"left": {
|
||||||
|
"end": 152,
|
||||||
|
"raw": "3",
|
||||||
|
"start": 151,
|
||||||
|
"type": "Literal",
|
||||||
|
"type": "Literal",
|
||||||
|
"value": 3
|
||||||
|
},
|
||||||
|
"operator": "<",
|
||||||
|
"right": {
|
||||||
|
"end": 156,
|
||||||
|
"raw": "4",
|
||||||
|
"start": 155,
|
||||||
|
"type": "Literal",
|
||||||
|
"type": "Literal",
|
||||||
|
"value": 4
|
||||||
|
},
|
||||||
|
"start": 151,
|
||||||
|
"type": "BinaryExpression",
|
||||||
|
"type": "BinaryExpression"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"end": 162,
|
||||||
|
"raw": "\"lt\"",
|
||||||
|
"start": 158,
|
||||||
|
"type": "Literal",
|
||||||
|
"type": "Literal",
|
||||||
|
"value": "lt"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"callee": {
|
||||||
|
"end": 150,
|
||||||
|
"name": "assert",
|
||||||
|
"start": 144,
|
||||||
|
"type": "Identifier"
|
||||||
|
},
|
||||||
|
"end": 163,
|
||||||
|
"optional": false,
|
||||||
|
"start": 144,
|
||||||
|
"type": "CallExpression",
|
||||||
|
"type": "CallExpression"
|
||||||
|
},
|
||||||
|
"start": 144,
|
||||||
|
"type": "ExpressionStatement",
|
||||||
|
"type": "ExpressionStatement"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"end": 201,
|
||||||
|
"expression": {
|
||||||
|
"arguments": [
|
||||||
|
{
|
||||||
|
"end": 177,
|
||||||
|
"left": {
|
||||||
|
"end": 172,
|
||||||
|
"raw": "3",
|
||||||
|
"start": 171,
|
||||||
|
"type": "Literal",
|
||||||
|
"type": "Literal",
|
||||||
|
"value": 3
|
||||||
|
},
|
||||||
|
"operator": "<=",
|
||||||
|
"right": {
|
||||||
|
"end": 177,
|
||||||
|
"raw": "4",
|
||||||
|
"start": 176,
|
||||||
|
"type": "Literal",
|
||||||
|
"type": "Literal",
|
||||||
|
"value": 4
|
||||||
|
},
|
||||||
|
"start": 171,
|
||||||
|
"type": "BinaryExpression",
|
||||||
|
"type": "BinaryExpression"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"end": 200,
|
||||||
|
"raw": "\"lte but actually lt\"",
|
||||||
|
"start": 179,
|
||||||
|
"type": "Literal",
|
||||||
|
"type": "Literal",
|
||||||
|
"value": "lte but actually lt"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"callee": {
|
||||||
|
"end": 170,
|
||||||
|
"name": "assert",
|
||||||
|
"start": 164,
|
||||||
|
"type": "Identifier"
|
||||||
|
},
|
||||||
|
"end": 201,
|
||||||
|
"optional": false,
|
||||||
|
"start": 164,
|
||||||
|
"type": "CallExpression",
|
||||||
|
"type": "CallExpression"
|
||||||
|
},
|
||||||
|
"start": 164,
|
||||||
|
"type": "ExpressionStatement",
|
||||||
|
"type": "ExpressionStatement"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"end": 239,
|
||||||
|
"expression": {
|
||||||
|
"arguments": [
|
||||||
|
{
|
||||||
|
"end": 215,
|
||||||
|
"left": {
|
||||||
|
"end": 210,
|
||||||
|
"raw": "4",
|
||||||
|
"start": 209,
|
||||||
|
"type": "Literal",
|
||||||
|
"type": "Literal",
|
||||||
|
"value": 4
|
||||||
|
},
|
||||||
|
"operator": "<=",
|
||||||
|
"right": {
|
||||||
|
"end": 215,
|
||||||
|
"raw": "4",
|
||||||
|
"start": 214,
|
||||||
|
"type": "Literal",
|
||||||
|
"type": "Literal",
|
||||||
|
"value": 4
|
||||||
|
},
|
||||||
|
"start": 209,
|
||||||
|
"type": "BinaryExpression",
|
||||||
|
"type": "BinaryExpression"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"end": 238,
|
||||||
|
"raw": "\"lte but actually eq\"",
|
||||||
|
"start": 217,
|
||||||
|
"type": "Literal",
|
||||||
|
"type": "Literal",
|
||||||
|
"value": "lte but actually eq"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"callee": {
|
||||||
|
"end": 208,
|
||||||
|
"name": "assert",
|
||||||
|
"start": 202,
|
||||||
|
"type": "Identifier"
|
||||||
|
},
|
||||||
|
"end": 239,
|
||||||
|
"optional": false,
|
||||||
|
"start": 202,
|
||||||
|
"type": "CallExpression",
|
||||||
|
"type": "CallExpression"
|
||||||
|
},
|
||||||
|
"start": 202,
|
||||||
|
"type": "ExpressionStatement",
|
||||||
|
"type": "ExpressionStatement"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"end": 259,
|
||||||
|
"expression": {
|
||||||
|
"arguments": [
|
||||||
|
{
|
||||||
|
"end": 252,
|
||||||
|
"left": {
|
||||||
|
"end": 248,
|
||||||
|
"raw": "4",
|
||||||
|
"start": 247,
|
||||||
|
"type": "Literal",
|
||||||
|
"type": "Literal",
|
||||||
|
"value": 4
|
||||||
|
},
|
||||||
|
"operator": ">",
|
||||||
|
"right": {
|
||||||
|
"end": 252,
|
||||||
|
"raw": "3",
|
||||||
|
"start": 251,
|
||||||
|
"type": "Literal",
|
||||||
|
"type": "Literal",
|
||||||
|
"value": 3
|
||||||
|
},
|
||||||
|
"start": 247,
|
||||||
|
"type": "BinaryExpression",
|
||||||
|
"type": "BinaryExpression"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"end": 258,
|
||||||
|
"raw": "\"gt\"",
|
||||||
|
"start": 254,
|
||||||
|
"type": "Literal",
|
||||||
|
"type": "Literal",
|
||||||
|
"value": "gt"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"callee": {
|
||||||
|
"end": 246,
|
||||||
|
"name": "assert",
|
||||||
|
"start": 240,
|
||||||
|
"type": "Identifier"
|
||||||
|
},
|
||||||
|
"end": 259,
|
||||||
|
"optional": false,
|
||||||
|
"start": 240,
|
||||||
|
"type": "CallExpression",
|
||||||
|
"type": "CallExpression"
|
||||||
|
},
|
||||||
|
"start": 240,
|
||||||
|
"type": "ExpressionStatement",
|
||||||
|
"type": "ExpressionStatement"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"end": 297,
|
||||||
|
"expression": {
|
||||||
|
"arguments": [
|
||||||
|
{
|
||||||
|
"end": 273,
|
||||||
|
"left": {
|
||||||
|
"end": 268,
|
||||||
|
"raw": "4",
|
||||||
|
"start": 267,
|
||||||
|
"type": "Literal",
|
||||||
|
"type": "Literal",
|
||||||
|
"value": 4
|
||||||
|
},
|
||||||
|
"operator": ">=",
|
||||||
|
"right": {
|
||||||
|
"end": 273,
|
||||||
|
"raw": "3",
|
||||||
|
"start": 272,
|
||||||
|
"type": "Literal",
|
||||||
|
"type": "Literal",
|
||||||
|
"value": 3
|
||||||
|
},
|
||||||
|
"start": 267,
|
||||||
|
"type": "BinaryExpression",
|
||||||
|
"type": "BinaryExpression"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"end": 296,
|
||||||
|
"raw": "\"gte but actually gt\"",
|
||||||
|
"start": 275,
|
||||||
|
"type": "Literal",
|
||||||
|
"type": "Literal",
|
||||||
|
"value": "gte but actually gt"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"callee": {
|
||||||
|
"end": 266,
|
||||||
|
"name": "assert",
|
||||||
|
"start": 260,
|
||||||
|
"type": "Identifier"
|
||||||
|
},
|
||||||
|
"end": 297,
|
||||||
|
"optional": false,
|
||||||
|
"start": 260,
|
||||||
|
"type": "CallExpression",
|
||||||
|
"type": "CallExpression"
|
||||||
|
},
|
||||||
|
"start": 260,
|
||||||
|
"type": "ExpressionStatement",
|
||||||
|
"type": "ExpressionStatement"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"end": 335,
|
||||||
|
"expression": {
|
||||||
|
"arguments": [
|
||||||
|
{
|
||||||
|
"end": 311,
|
||||||
|
"left": {
|
||||||
|
"end": 306,
|
||||||
|
"raw": "3",
|
||||||
|
"start": 305,
|
||||||
|
"type": "Literal",
|
||||||
|
"type": "Literal",
|
||||||
|
"value": 3
|
||||||
|
},
|
||||||
|
"operator": ">=",
|
||||||
|
"right": {
|
||||||
|
"end": 311,
|
||||||
|
"raw": "3",
|
||||||
|
"start": 310,
|
||||||
|
"type": "Literal",
|
||||||
|
"type": "Literal",
|
||||||
|
"value": 3
|
||||||
|
},
|
||||||
|
"start": 305,
|
||||||
|
"type": "BinaryExpression",
|
||||||
|
"type": "BinaryExpression"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"end": 334,
|
||||||
|
"raw": "\"gte but actually eq\"",
|
||||||
|
"start": 313,
|
||||||
|
"type": "Literal",
|
||||||
|
"type": "Literal",
|
||||||
|
"value": "gte but actually eq"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"callee": {
|
||||||
|
"end": 304,
|
||||||
|
"name": "assert",
|
||||||
|
"start": 298,
|
||||||
|
"type": "Identifier"
|
||||||
|
},
|
||||||
|
"end": 335,
|
||||||
|
"optional": false,
|
||||||
|
"start": 298,
|
||||||
|
"type": "CallExpression",
|
||||||
|
"type": "CallExpression"
|
||||||
|
},
|
||||||
|
"start": 298,
|
||||||
|
"type": "ExpressionStatement",
|
||||||
|
"type": "ExpressionStatement"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"end": 375,
|
||||||
|
"expression": {
|
||||||
|
"arguments": [
|
||||||
|
{
|
||||||
|
"end": 354,
|
||||||
|
"left": {
|
||||||
|
"end": 347,
|
||||||
|
"raw": "0.0",
|
||||||
|
"start": 344,
|
||||||
|
"type": "Literal",
|
||||||
|
"type": "Literal",
|
||||||
|
"value": 0.0
|
||||||
|
},
|
||||||
|
"operator": "==",
|
||||||
|
"right": {
|
||||||
|
"end": 354,
|
||||||
|
"raw": "0.0",
|
||||||
|
"start": 351,
|
||||||
|
"type": "Literal",
|
||||||
|
"type": "Literal",
|
||||||
|
"value": 0.0
|
||||||
|
},
|
||||||
|
"start": 344,
|
||||||
|
"type": "BinaryExpression",
|
||||||
|
"type": "BinaryExpression"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"end": 374,
|
||||||
|
"raw": "\"equality of zero\"",
|
||||||
|
"start": 356,
|
||||||
|
"type": "Literal",
|
||||||
|
"type": "Literal",
|
||||||
|
"value": "equality of zero"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"callee": {
|
||||||
|
"end": 343,
|
||||||
|
"name": "assert",
|
||||||
|
"start": 337,
|
||||||
|
"type": "Identifier"
|
||||||
|
},
|
||||||
|
"end": 375,
|
||||||
|
"optional": false,
|
||||||
|
"start": 337,
|
||||||
|
"type": "CallExpression",
|
||||||
|
"type": "CallExpression"
|
||||||
|
},
|
||||||
|
"start": 337,
|
||||||
|
"type": "ExpressionStatement",
|
||||||
|
"type": "ExpressionStatement"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"end": 428,
|
||||||
|
"expression": {
|
||||||
|
"arguments": [
|
||||||
|
{
|
||||||
|
"end": 394,
|
||||||
|
"left": {
|
||||||
|
"end": 386,
|
||||||
|
"raw": "0.0",
|
||||||
|
"start": 383,
|
||||||
|
"type": "Literal",
|
||||||
|
"type": "Literal",
|
||||||
|
"value": 0.0
|
||||||
|
},
|
||||||
|
"operator": "==",
|
||||||
|
"right": {
|
||||||
|
"argument": {
|
||||||
|
"end": 394,
|
||||||
|
"raw": "0.0",
|
||||||
|
"start": 391,
|
||||||
|
"type": "Literal",
|
||||||
|
"type": "Literal",
|
||||||
|
"value": 0.0
|
||||||
|
},
|
||||||
|
"end": 394,
|
||||||
|
"operator": "-",
|
||||||
|
"start": 390,
|
||||||
|
"type": "UnaryExpression",
|
||||||
|
"type": "UnaryExpression"
|
||||||
|
},
|
||||||
|
"start": 383,
|
||||||
|
"type": "BinaryExpression",
|
||||||
|
"type": "BinaryExpression"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"end": 427,
|
||||||
|
"raw": "\"equality of zero and neg zero\"",
|
||||||
|
"start": 396,
|
||||||
|
"type": "Literal",
|
||||||
|
"type": "Literal",
|
||||||
|
"value": "equality of zero and neg zero"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"callee": {
|
||||||
|
"end": 382,
|
||||||
|
"name": "assert",
|
||||||
|
"start": 376,
|
||||||
|
"type": "Identifier"
|
||||||
|
},
|
||||||
|
"end": 428,
|
||||||
|
"optional": false,
|
||||||
|
"start": 376,
|
||||||
|
"type": "CallExpression",
|
||||||
|
"type": "CallExpression"
|
||||||
|
},
|
||||||
|
"start": 376,
|
||||||
|
"type": "ExpressionStatement",
|
||||||
|
"type": "ExpressionStatement"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"end": 429,
|
||||||
|
"nonCodeMeta": {
|
||||||
|
"nonCodeNodes": {
|
||||||
|
"9": [
|
||||||
|
{
|
||||||
|
"end": 337,
|
||||||
|
"start": 335,
|
||||||
|
"type": "NonCodeNode",
|
||||||
|
"value": {
|
||||||
|
"type": "newLine"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"startNodes": []
|
||||||
|
},
|
||||||
|
"start": 0
|
||||||
|
}
|
||||||
|
}
|
40
src/wasm-lib/kcl/tests/comparisons/program_memory.snap
Normal file
40
src/wasm-lib/kcl/tests/comparisons/program_memory.snap
Normal file
@ -0,0 +1,40 @@
|
|||||||
|
---
|
||||||
|
source: kcl/src/simulation_tests.rs
|
||||||
|
description: Program memory after executing comparisons.kcl
|
||||||
|
snapshot_kind: text
|
||||||
|
---
|
||||||
|
{
|
||||||
|
"environments": [
|
||||||
|
{
|
||||||
|
"bindings": {
|
||||||
|
"HALF_TURN": {
|
||||||
|
"type": "UserVal",
|
||||||
|
"type": "UserVal",
|
||||||
|
"value": 180,
|
||||||
|
"__meta": []
|
||||||
|
},
|
||||||
|
"QUARTER_TURN": {
|
||||||
|
"type": "UserVal",
|
||||||
|
"type": "UserVal",
|
||||||
|
"value": 90,
|
||||||
|
"__meta": []
|
||||||
|
},
|
||||||
|
"THREE_QUARTER_TURN": {
|
||||||
|
"type": "UserVal",
|
||||||
|
"type": "UserVal",
|
||||||
|
"value": 270,
|
||||||
|
"__meta": []
|
||||||
|
},
|
||||||
|
"ZERO": {
|
||||||
|
"type": "UserVal",
|
||||||
|
"type": "UserVal",
|
||||||
|
"value": 0,
|
||||||
|
"__meta": []
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"parent": null
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"currentEnv": 0,
|
||||||
|
"return": null
|
||||||
|
}
|
879
src/wasm-lib/kcl/tests/comparisons/tokens.snap
Normal file
879
src/wasm-lib/kcl/tests/comparisons/tokens.snap
Normal file
@ -0,0 +1,879 @@
|
|||||||
|
---
|
||||||
|
source: kcl/src/simulation_tests.rs
|
||||||
|
description: Result of tokenizing comparisons.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": "comma",
|
||||||
|
"start": 13,
|
||||||
|
"end": 14,
|
||||||
|
"value": ","
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "whitespace",
|
||||||
|
"start": 14,
|
||||||
|
"end": 15,
|
||||||
|
"value": " "
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "string",
|
||||||
|
"start": 15,
|
||||||
|
"end": 25,
|
||||||
|
"value": "\"equality\""
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "brace",
|
||||||
|
"start": 25,
|
||||||
|
"end": 26,
|
||||||
|
"value": ")"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "whitespace",
|
||||||
|
"start": 26,
|
||||||
|
"end": 27,
|
||||||
|
"value": "\n"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "word",
|
||||||
|
"start": 27,
|
||||||
|
"end": 33,
|
||||||
|
"value": "assert"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "brace",
|
||||||
|
"start": 33,
|
||||||
|
"end": 34,
|
||||||
|
"value": "("
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "number",
|
||||||
|
"start": 34,
|
||||||
|
"end": 37,
|
||||||
|
"value": "3.0"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "whitespace",
|
||||||
|
"start": 37,
|
||||||
|
"end": 38,
|
||||||
|
"value": " "
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "operator",
|
||||||
|
"start": 38,
|
||||||
|
"end": 40,
|
||||||
|
"value": "=="
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "whitespace",
|
||||||
|
"start": 40,
|
||||||
|
"end": 41,
|
||||||
|
"value": " "
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "number",
|
||||||
|
"start": 41,
|
||||||
|
"end": 44,
|
||||||
|
"value": "3.0"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "comma",
|
||||||
|
"start": 44,
|
||||||
|
"end": 45,
|
||||||
|
"value": ","
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "whitespace",
|
||||||
|
"start": 45,
|
||||||
|
"end": 46,
|
||||||
|
"value": " "
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "string",
|
||||||
|
"start": 46,
|
||||||
|
"end": 66,
|
||||||
|
"value": "\"equality of floats\""
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "brace",
|
||||||
|
"start": 66,
|
||||||
|
"end": 67,
|
||||||
|
"value": ")"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "whitespace",
|
||||||
|
"start": 67,
|
||||||
|
"end": 68,
|
||||||
|
"value": "\n"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "word",
|
||||||
|
"start": 68,
|
||||||
|
"end": 74,
|
||||||
|
"value": "assert"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "brace",
|
||||||
|
"start": 74,
|
||||||
|
"end": 75,
|
||||||
|
"value": "("
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "number",
|
||||||
|
"start": 75,
|
||||||
|
"end": 76,
|
||||||
|
"value": "3"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "whitespace",
|
||||||
|
"start": 76,
|
||||||
|
"end": 77,
|
||||||
|
"value": " "
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "operator",
|
||||||
|
"start": 77,
|
||||||
|
"end": 79,
|
||||||
|
"value": "!="
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "whitespace",
|
||||||
|
"start": 79,
|
||||||
|
"end": 80,
|
||||||
|
"value": " "
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "number",
|
||||||
|
"start": 80,
|
||||||
|
"end": 81,
|
||||||
|
"value": "4"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "comma",
|
||||||
|
"start": 81,
|
||||||
|
"end": 82,
|
||||||
|
"value": ","
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "whitespace",
|
||||||
|
"start": 82,
|
||||||
|
"end": 83,
|
||||||
|
"value": " "
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "string",
|
||||||
|
"start": 83,
|
||||||
|
"end": 97,
|
||||||
|
"value": "\"non-equality\""
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "brace",
|
||||||
|
"start": 97,
|
||||||
|
"end": 98,
|
||||||
|
"value": ")"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "whitespace",
|
||||||
|
"start": 98,
|
||||||
|
"end": 99,
|
||||||
|
"value": "\n"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "word",
|
||||||
|
"start": 99,
|
||||||
|
"end": 105,
|
||||||
|
"value": "assert"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "brace",
|
||||||
|
"start": 105,
|
||||||
|
"end": 106,
|
||||||
|
"value": "("
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "number",
|
||||||
|
"start": 106,
|
||||||
|
"end": 109,
|
||||||
|
"value": "3.0"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "whitespace",
|
||||||
|
"start": 109,
|
||||||
|
"end": 110,
|
||||||
|
"value": " "
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "operator",
|
||||||
|
"start": 110,
|
||||||
|
"end": 112,
|
||||||
|
"value": "!="
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "whitespace",
|
||||||
|
"start": 112,
|
||||||
|
"end": 113,
|
||||||
|
"value": " "
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "number",
|
||||||
|
"start": 113,
|
||||||
|
"end": 116,
|
||||||
|
"value": "4.0"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "comma",
|
||||||
|
"start": 116,
|
||||||
|
"end": 117,
|
||||||
|
"value": ","
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "whitespace",
|
||||||
|
"start": 117,
|
||||||
|
"end": 118,
|
||||||
|
"value": " "
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "string",
|
||||||
|
"start": 118,
|
||||||
|
"end": 142,
|
||||||
|
"value": "\"non-equality of floats\""
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "brace",
|
||||||
|
"start": 142,
|
||||||
|
"end": 143,
|
||||||
|
"value": ")"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "whitespace",
|
||||||
|
"start": 143,
|
||||||
|
"end": 144,
|
||||||
|
"value": "\n"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "word",
|
||||||
|
"start": 144,
|
||||||
|
"end": 150,
|
||||||
|
"value": "assert"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "brace",
|
||||||
|
"start": 150,
|
||||||
|
"end": 151,
|
||||||
|
"value": "("
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "number",
|
||||||
|
"start": 151,
|
||||||
|
"end": 152,
|
||||||
|
"value": "3"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "whitespace",
|
||||||
|
"start": 152,
|
||||||
|
"end": 153,
|
||||||
|
"value": " "
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "operator",
|
||||||
|
"start": 153,
|
||||||
|
"end": 154,
|
||||||
|
"value": "<"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "whitespace",
|
||||||
|
"start": 154,
|
||||||
|
"end": 155,
|
||||||
|
"value": " "
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "number",
|
||||||
|
"start": 155,
|
||||||
|
"end": 156,
|
||||||
|
"value": "4"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "comma",
|
||||||
|
"start": 156,
|
||||||
|
"end": 157,
|
||||||
|
"value": ","
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "whitespace",
|
||||||
|
"start": 157,
|
||||||
|
"end": 158,
|
||||||
|
"value": " "
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "string",
|
||||||
|
"start": 158,
|
||||||
|
"end": 162,
|
||||||
|
"value": "\"lt\""
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "brace",
|
||||||
|
"start": 162,
|
||||||
|
"end": 163,
|
||||||
|
"value": ")"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "whitespace",
|
||||||
|
"start": 163,
|
||||||
|
"end": 164,
|
||||||
|
"value": "\n"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "word",
|
||||||
|
"start": 164,
|
||||||
|
"end": 170,
|
||||||
|
"value": "assert"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "brace",
|
||||||
|
"start": 170,
|
||||||
|
"end": 171,
|
||||||
|
"value": "("
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "number",
|
||||||
|
"start": 171,
|
||||||
|
"end": 172,
|
||||||
|
"value": "3"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "whitespace",
|
||||||
|
"start": 172,
|
||||||
|
"end": 173,
|
||||||
|
"value": " "
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "operator",
|
||||||
|
"start": 173,
|
||||||
|
"end": 175,
|
||||||
|
"value": "<="
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "whitespace",
|
||||||
|
"start": 175,
|
||||||
|
"end": 176,
|
||||||
|
"value": " "
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "number",
|
||||||
|
"start": 176,
|
||||||
|
"end": 177,
|
||||||
|
"value": "4"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "comma",
|
||||||
|
"start": 177,
|
||||||
|
"end": 178,
|
||||||
|
"value": ","
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "whitespace",
|
||||||
|
"start": 178,
|
||||||
|
"end": 179,
|
||||||
|
"value": " "
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "string",
|
||||||
|
"start": 179,
|
||||||
|
"end": 200,
|
||||||
|
"value": "\"lte but actually lt\""
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "brace",
|
||||||
|
"start": 200,
|
||||||
|
"end": 201,
|
||||||
|
"value": ")"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "whitespace",
|
||||||
|
"start": 201,
|
||||||
|
"end": 202,
|
||||||
|
"value": "\n"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "word",
|
||||||
|
"start": 202,
|
||||||
|
"end": 208,
|
||||||
|
"value": "assert"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "brace",
|
||||||
|
"start": 208,
|
||||||
|
"end": 209,
|
||||||
|
"value": "("
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "number",
|
||||||
|
"start": 209,
|
||||||
|
"end": 210,
|
||||||
|
"value": "4"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "whitespace",
|
||||||
|
"start": 210,
|
||||||
|
"end": 211,
|
||||||
|
"value": " "
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "operator",
|
||||||
|
"start": 211,
|
||||||
|
"end": 213,
|
||||||
|
"value": "<="
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "whitespace",
|
||||||
|
"start": 213,
|
||||||
|
"end": 214,
|
||||||
|
"value": " "
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "number",
|
||||||
|
"start": 214,
|
||||||
|
"end": 215,
|
||||||
|
"value": "4"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "comma",
|
||||||
|
"start": 215,
|
||||||
|
"end": 216,
|
||||||
|
"value": ","
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "whitespace",
|
||||||
|
"start": 216,
|
||||||
|
"end": 217,
|
||||||
|
"value": " "
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "string",
|
||||||
|
"start": 217,
|
||||||
|
"end": 238,
|
||||||
|
"value": "\"lte but actually eq\""
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "brace",
|
||||||
|
"start": 238,
|
||||||
|
"end": 239,
|
||||||
|
"value": ")"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "whitespace",
|
||||||
|
"start": 239,
|
||||||
|
"end": 240,
|
||||||
|
"value": "\n"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "word",
|
||||||
|
"start": 240,
|
||||||
|
"end": 246,
|
||||||
|
"value": "assert"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "brace",
|
||||||
|
"start": 246,
|
||||||
|
"end": 247,
|
||||||
|
"value": "("
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "number",
|
||||||
|
"start": 247,
|
||||||
|
"end": 248,
|
||||||
|
"value": "4"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "whitespace",
|
||||||
|
"start": 248,
|
||||||
|
"end": 249,
|
||||||
|
"value": " "
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "operator",
|
||||||
|
"start": 249,
|
||||||
|
"end": 250,
|
||||||
|
"value": ">"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "whitespace",
|
||||||
|
"start": 250,
|
||||||
|
"end": 251,
|
||||||
|
"value": " "
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "number",
|
||||||
|
"start": 251,
|
||||||
|
"end": 252,
|
||||||
|
"value": "3"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "comma",
|
||||||
|
"start": 252,
|
||||||
|
"end": 253,
|
||||||
|
"value": ","
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "whitespace",
|
||||||
|
"start": 253,
|
||||||
|
"end": 254,
|
||||||
|
"value": " "
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "string",
|
||||||
|
"start": 254,
|
||||||
|
"end": 258,
|
||||||
|
"value": "\"gt\""
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "brace",
|
||||||
|
"start": 258,
|
||||||
|
"end": 259,
|
||||||
|
"value": ")"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "whitespace",
|
||||||
|
"start": 259,
|
||||||
|
"end": 260,
|
||||||
|
"value": "\n"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "word",
|
||||||
|
"start": 260,
|
||||||
|
"end": 266,
|
||||||
|
"value": "assert"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "brace",
|
||||||
|
"start": 266,
|
||||||
|
"end": 267,
|
||||||
|
"value": "("
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "number",
|
||||||
|
"start": 267,
|
||||||
|
"end": 268,
|
||||||
|
"value": "4"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "whitespace",
|
||||||
|
"start": 268,
|
||||||
|
"end": 269,
|
||||||
|
"value": " "
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "operator",
|
||||||
|
"start": 269,
|
||||||
|
"end": 271,
|
||||||
|
"value": ">="
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "whitespace",
|
||||||
|
"start": 271,
|
||||||
|
"end": 272,
|
||||||
|
"value": " "
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "number",
|
||||||
|
"start": 272,
|
||||||
|
"end": 273,
|
||||||
|
"value": "3"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "comma",
|
||||||
|
"start": 273,
|
||||||
|
"end": 274,
|
||||||
|
"value": ","
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "whitespace",
|
||||||
|
"start": 274,
|
||||||
|
"end": 275,
|
||||||
|
"value": " "
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "string",
|
||||||
|
"start": 275,
|
||||||
|
"end": 296,
|
||||||
|
"value": "\"gte but actually gt\""
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "brace",
|
||||||
|
"start": 296,
|
||||||
|
"end": 297,
|
||||||
|
"value": ")"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "whitespace",
|
||||||
|
"start": 297,
|
||||||
|
"end": 298,
|
||||||
|
"value": "\n"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "word",
|
||||||
|
"start": 298,
|
||||||
|
"end": 304,
|
||||||
|
"value": "assert"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "brace",
|
||||||
|
"start": 304,
|
||||||
|
"end": 305,
|
||||||
|
"value": "("
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "number",
|
||||||
|
"start": 305,
|
||||||
|
"end": 306,
|
||||||
|
"value": "3"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "whitespace",
|
||||||
|
"start": 306,
|
||||||
|
"end": 307,
|
||||||
|
"value": " "
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "operator",
|
||||||
|
"start": 307,
|
||||||
|
"end": 309,
|
||||||
|
"value": ">="
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "whitespace",
|
||||||
|
"start": 309,
|
||||||
|
"end": 310,
|
||||||
|
"value": " "
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "number",
|
||||||
|
"start": 310,
|
||||||
|
"end": 311,
|
||||||
|
"value": "3"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "comma",
|
||||||
|
"start": 311,
|
||||||
|
"end": 312,
|
||||||
|
"value": ","
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "whitespace",
|
||||||
|
"start": 312,
|
||||||
|
"end": 313,
|
||||||
|
"value": " "
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "string",
|
||||||
|
"start": 313,
|
||||||
|
"end": 334,
|
||||||
|
"value": "\"gte but actually eq\""
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "brace",
|
||||||
|
"start": 334,
|
||||||
|
"end": 335,
|
||||||
|
"value": ")"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "whitespace",
|
||||||
|
"start": 335,
|
||||||
|
"end": 337,
|
||||||
|
"value": "\n\n"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "word",
|
||||||
|
"start": 337,
|
||||||
|
"end": 343,
|
||||||
|
"value": "assert"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "brace",
|
||||||
|
"start": 343,
|
||||||
|
"end": 344,
|
||||||
|
"value": "("
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "number",
|
||||||
|
"start": 344,
|
||||||
|
"end": 347,
|
||||||
|
"value": "0.0"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "whitespace",
|
||||||
|
"start": 347,
|
||||||
|
"end": 348,
|
||||||
|
"value": " "
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "operator",
|
||||||
|
"start": 348,
|
||||||
|
"end": 350,
|
||||||
|
"value": "=="
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "whitespace",
|
||||||
|
"start": 350,
|
||||||
|
"end": 351,
|
||||||
|
"value": " "
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "number",
|
||||||
|
"start": 351,
|
||||||
|
"end": 354,
|
||||||
|
"value": "0.0"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "comma",
|
||||||
|
"start": 354,
|
||||||
|
"end": 355,
|
||||||
|
"value": ","
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "whitespace",
|
||||||
|
"start": 355,
|
||||||
|
"end": 356,
|
||||||
|
"value": " "
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "string",
|
||||||
|
"start": 356,
|
||||||
|
"end": 374,
|
||||||
|
"value": "\"equality of zero\""
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "brace",
|
||||||
|
"start": 374,
|
||||||
|
"end": 375,
|
||||||
|
"value": ")"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "whitespace",
|
||||||
|
"start": 375,
|
||||||
|
"end": 376,
|
||||||
|
"value": "\n"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "word",
|
||||||
|
"start": 376,
|
||||||
|
"end": 382,
|
||||||
|
"value": "assert"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "brace",
|
||||||
|
"start": 382,
|
||||||
|
"end": 383,
|
||||||
|
"value": "("
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "number",
|
||||||
|
"start": 383,
|
||||||
|
"end": 386,
|
||||||
|
"value": "0.0"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "whitespace",
|
||||||
|
"start": 386,
|
||||||
|
"end": 387,
|
||||||
|
"value": " "
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "operator",
|
||||||
|
"start": 387,
|
||||||
|
"end": 389,
|
||||||
|
"value": "=="
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "whitespace",
|
||||||
|
"start": 389,
|
||||||
|
"end": 390,
|
||||||
|
"value": " "
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "operator",
|
||||||
|
"start": 390,
|
||||||
|
"end": 391,
|
||||||
|
"value": "-"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "number",
|
||||||
|
"start": 391,
|
||||||
|
"end": 394,
|
||||||
|
"value": "0.0"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "comma",
|
||||||
|
"start": 394,
|
||||||
|
"end": 395,
|
||||||
|
"value": ","
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "whitespace",
|
||||||
|
"start": 395,
|
||||||
|
"end": 396,
|
||||||
|
"value": " "
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "string",
|
||||||
|
"start": 396,
|
||||||
|
"end": 427,
|
||||||
|
"value": "\"equality of zero and neg zero\""
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "brace",
|
||||||
|
"start": 427,
|
||||||
|
"end": 428,
|
||||||
|
"value": ")"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "whitespace",
|
||||||
|
"start": 428,
|
||||||
|
"end": 429,
|
||||||
|
"value": "\n"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
546
src/wasm-lib/kcl/tests/if_else/ast.snap
Normal file
546
src/wasm-lib/kcl/tests/if_else/ast.snap
Normal file
@ -0,0 +1,546 @@
|
|||||||
|
---
|
||||||
|
source: kcl/src/simulation_tests.rs
|
||||||
|
description: Result of parsing if_else.kcl
|
||||||
|
snapshot_kind: text
|
||||||
|
---
|
||||||
|
{
|
||||||
|
"Ok": {
|
||||||
|
"body": [
|
||||||
|
{
|
||||||
|
"declarations": [
|
||||||
|
{
|
||||||
|
"end": 101,
|
||||||
|
"id": {
|
||||||
|
"end": 49,
|
||||||
|
"name": "a",
|
||||||
|
"start": 48,
|
||||||
|
"type": "Identifier"
|
||||||
|
},
|
||||||
|
"init": {
|
||||||
|
"cond": {
|
||||||
|
"end": 59,
|
||||||
|
"raw": "true",
|
||||||
|
"start": 55,
|
||||||
|
"type": "Literal",
|
||||||
|
"type": "Literal",
|
||||||
|
"value": true
|
||||||
|
},
|
||||||
|
"digest": null,
|
||||||
|
"else_ifs": [
|
||||||
|
{
|
||||||
|
"cond": {
|
||||||
|
"end": 80,
|
||||||
|
"raw": "true",
|
||||||
|
"start": 76,
|
||||||
|
"type": "Literal",
|
||||||
|
"type": "Literal",
|
||||||
|
"value": true
|
||||||
|
},
|
||||||
|
"digest": null,
|
||||||
|
"end": 88,
|
||||||
|
"start": 68,
|
||||||
|
"then_val": {
|
||||||
|
"body": [
|
||||||
|
{
|
||||||
|
"end": 86,
|
||||||
|
"expression": {
|
||||||
|
"end": 86,
|
||||||
|
"raw": "4",
|
||||||
|
"start": 85,
|
||||||
|
"type": "Literal",
|
||||||
|
"type": "Literal",
|
||||||
|
"value": 4
|
||||||
|
},
|
||||||
|
"start": 85,
|
||||||
|
"type": "ExpressionStatement",
|
||||||
|
"type": "ExpressionStatement"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"end": 87,
|
||||||
|
"start": 81
|
||||||
|
},
|
||||||
|
"type": "ElseIf"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"end": 101,
|
||||||
|
"final_else": {
|
||||||
|
"body": [
|
||||||
|
{
|
||||||
|
"end": 99,
|
||||||
|
"expression": {
|
||||||
|
"end": 99,
|
||||||
|
"raw": "5",
|
||||||
|
"start": 98,
|
||||||
|
"type": "Literal",
|
||||||
|
"type": "Literal",
|
||||||
|
"value": 5
|
||||||
|
},
|
||||||
|
"start": 98,
|
||||||
|
"type": "ExpressionStatement",
|
||||||
|
"type": "ExpressionStatement"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"end": 100,
|
||||||
|
"start": 98
|
||||||
|
},
|
||||||
|
"start": 52,
|
||||||
|
"then_val": {
|
||||||
|
"body": [
|
||||||
|
{
|
||||||
|
"end": 65,
|
||||||
|
"expression": {
|
||||||
|
"end": 65,
|
||||||
|
"raw": "3",
|
||||||
|
"start": 64,
|
||||||
|
"type": "Literal",
|
||||||
|
"type": "Literal",
|
||||||
|
"value": 3
|
||||||
|
},
|
||||||
|
"start": 64,
|
||||||
|
"type": "ExpressionStatement",
|
||||||
|
"type": "ExpressionStatement"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"end": 66,
|
||||||
|
"start": 64
|
||||||
|
},
|
||||||
|
"type": "IfExpression",
|
||||||
|
"type": "IfExpression"
|
||||||
|
},
|
||||||
|
"start": 48,
|
||||||
|
"type": "VariableDeclarator"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"end": 101,
|
||||||
|
"kind": "const",
|
||||||
|
"start": 48,
|
||||||
|
"type": "VariableDeclaration",
|
||||||
|
"type": "VariableDeclaration"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"end": 159,
|
||||||
|
"expression": {
|
||||||
|
"arguments": [
|
||||||
|
{
|
||||||
|
"end": 115,
|
||||||
|
"name": "a",
|
||||||
|
"start": 114,
|
||||||
|
"type": "Identifier",
|
||||||
|
"type": "Identifier"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"end": 118,
|
||||||
|
"raw": "3",
|
||||||
|
"start": 117,
|
||||||
|
"type": "Literal",
|
||||||
|
"type": "Literal",
|
||||||
|
"value": 3
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"end": 125,
|
||||||
|
"raw": "0.001",
|
||||||
|
"start": 120,
|
||||||
|
"type": "Literal",
|
||||||
|
"type": "Literal",
|
||||||
|
"value": 0.001
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"end": 158,
|
||||||
|
"raw": "\"the 'if' branch gets returned\"",
|
||||||
|
"start": 127,
|
||||||
|
"type": "Literal",
|
||||||
|
"type": "Literal",
|
||||||
|
"value": "the 'if' branch gets returned"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"callee": {
|
||||||
|
"end": 113,
|
||||||
|
"name": "assertEqual",
|
||||||
|
"start": 102,
|
||||||
|
"type": "Identifier"
|
||||||
|
},
|
||||||
|
"end": 159,
|
||||||
|
"optional": false,
|
||||||
|
"start": 102,
|
||||||
|
"type": "CallExpression",
|
||||||
|
"type": "CallExpression"
|
||||||
|
},
|
||||||
|
"start": 102,
|
||||||
|
"type": "ExpressionStatement",
|
||||||
|
"type": "ExpressionStatement"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"declarations": [
|
||||||
|
{
|
||||||
|
"end": 215,
|
||||||
|
"id": {
|
||||||
|
"end": 162,
|
||||||
|
"name": "b",
|
||||||
|
"start": 161,
|
||||||
|
"type": "Identifier"
|
||||||
|
},
|
||||||
|
"init": {
|
||||||
|
"cond": {
|
||||||
|
"end": 173,
|
||||||
|
"raw": "false",
|
||||||
|
"start": 168,
|
||||||
|
"type": "Literal",
|
||||||
|
"type": "Literal",
|
||||||
|
"value": false
|
||||||
|
},
|
||||||
|
"digest": null,
|
||||||
|
"else_ifs": [
|
||||||
|
{
|
||||||
|
"cond": {
|
||||||
|
"end": 194,
|
||||||
|
"raw": "true",
|
||||||
|
"start": 190,
|
||||||
|
"type": "Literal",
|
||||||
|
"type": "Literal",
|
||||||
|
"value": true
|
||||||
|
},
|
||||||
|
"digest": null,
|
||||||
|
"end": 202,
|
||||||
|
"start": 182,
|
||||||
|
"then_val": {
|
||||||
|
"body": [
|
||||||
|
{
|
||||||
|
"end": 200,
|
||||||
|
"expression": {
|
||||||
|
"end": 200,
|
||||||
|
"raw": "4",
|
||||||
|
"start": 199,
|
||||||
|
"type": "Literal",
|
||||||
|
"type": "Literal",
|
||||||
|
"value": 4
|
||||||
|
},
|
||||||
|
"start": 199,
|
||||||
|
"type": "ExpressionStatement",
|
||||||
|
"type": "ExpressionStatement"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"end": 201,
|
||||||
|
"start": 195
|
||||||
|
},
|
||||||
|
"type": "ElseIf"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"end": 215,
|
||||||
|
"final_else": {
|
||||||
|
"body": [
|
||||||
|
{
|
||||||
|
"end": 213,
|
||||||
|
"expression": {
|
||||||
|
"end": 213,
|
||||||
|
"raw": "5",
|
||||||
|
"start": 212,
|
||||||
|
"type": "Literal",
|
||||||
|
"type": "Literal",
|
||||||
|
"value": 5
|
||||||
|
},
|
||||||
|
"start": 212,
|
||||||
|
"type": "ExpressionStatement",
|
||||||
|
"type": "ExpressionStatement"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"end": 214,
|
||||||
|
"start": 212
|
||||||
|
},
|
||||||
|
"start": 165,
|
||||||
|
"then_val": {
|
||||||
|
"body": [
|
||||||
|
{
|
||||||
|
"end": 179,
|
||||||
|
"expression": {
|
||||||
|
"end": 179,
|
||||||
|
"raw": "3",
|
||||||
|
"start": 178,
|
||||||
|
"type": "Literal",
|
||||||
|
"type": "Literal",
|
||||||
|
"value": 3
|
||||||
|
},
|
||||||
|
"start": 178,
|
||||||
|
"type": "ExpressionStatement",
|
||||||
|
"type": "ExpressionStatement"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"end": 180,
|
||||||
|
"start": 178
|
||||||
|
},
|
||||||
|
"type": "IfExpression",
|
||||||
|
"type": "IfExpression"
|
||||||
|
},
|
||||||
|
"start": 161,
|
||||||
|
"type": "VariableDeclarator"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"end": 215,
|
||||||
|
"kind": "const",
|
||||||
|
"start": 161,
|
||||||
|
"type": "VariableDeclaration",
|
||||||
|
"type": "VariableDeclaration"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"end": 278,
|
||||||
|
"expression": {
|
||||||
|
"arguments": [
|
||||||
|
{
|
||||||
|
"end": 229,
|
||||||
|
"name": "b",
|
||||||
|
"start": 228,
|
||||||
|
"type": "Identifier",
|
||||||
|
"type": "Identifier"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"end": 232,
|
||||||
|
"raw": "4",
|
||||||
|
"start": 231,
|
||||||
|
"type": "Literal",
|
||||||
|
"type": "Literal",
|
||||||
|
"value": 4
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"end": 239,
|
||||||
|
"raw": "0.001",
|
||||||
|
"start": 234,
|
||||||
|
"type": "Literal",
|
||||||
|
"type": "Literal",
|
||||||
|
"value": 0.001
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"end": 277,
|
||||||
|
"raw": "\"the 'else if' branch gets returned\"",
|
||||||
|
"start": 241,
|
||||||
|
"type": "Literal",
|
||||||
|
"type": "Literal",
|
||||||
|
"value": "the 'else if' branch gets returned"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"callee": {
|
||||||
|
"end": 227,
|
||||||
|
"name": "assertEqual",
|
||||||
|
"start": 216,
|
||||||
|
"type": "Identifier"
|
||||||
|
},
|
||||||
|
"end": 278,
|
||||||
|
"optional": false,
|
||||||
|
"start": 216,
|
||||||
|
"type": "CallExpression",
|
||||||
|
"type": "CallExpression"
|
||||||
|
},
|
||||||
|
"start": 216,
|
||||||
|
"type": "ExpressionStatement",
|
||||||
|
"type": "ExpressionStatement"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"declarations": [
|
||||||
|
{
|
||||||
|
"end": 335,
|
||||||
|
"id": {
|
||||||
|
"end": 281,
|
||||||
|
"name": "c",
|
||||||
|
"start": 280,
|
||||||
|
"type": "Identifier"
|
||||||
|
},
|
||||||
|
"init": {
|
||||||
|
"cond": {
|
||||||
|
"end": 292,
|
||||||
|
"raw": "false",
|
||||||
|
"start": 287,
|
||||||
|
"type": "Literal",
|
||||||
|
"type": "Literal",
|
||||||
|
"value": false
|
||||||
|
},
|
||||||
|
"digest": null,
|
||||||
|
"else_ifs": [
|
||||||
|
{
|
||||||
|
"cond": {
|
||||||
|
"end": 314,
|
||||||
|
"raw": "false",
|
||||||
|
"start": 309,
|
||||||
|
"type": "Literal",
|
||||||
|
"type": "Literal",
|
||||||
|
"value": false
|
||||||
|
},
|
||||||
|
"digest": null,
|
||||||
|
"end": 322,
|
||||||
|
"start": 301,
|
||||||
|
"then_val": {
|
||||||
|
"body": [
|
||||||
|
{
|
||||||
|
"end": 320,
|
||||||
|
"expression": {
|
||||||
|
"end": 320,
|
||||||
|
"raw": "4",
|
||||||
|
"start": 319,
|
||||||
|
"type": "Literal",
|
||||||
|
"type": "Literal",
|
||||||
|
"value": 4
|
||||||
|
},
|
||||||
|
"start": 319,
|
||||||
|
"type": "ExpressionStatement",
|
||||||
|
"type": "ExpressionStatement"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"end": 321,
|
||||||
|
"start": 315
|
||||||
|
},
|
||||||
|
"type": "ElseIf"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"end": 335,
|
||||||
|
"final_else": {
|
||||||
|
"body": [
|
||||||
|
{
|
||||||
|
"end": 333,
|
||||||
|
"expression": {
|
||||||
|
"end": 333,
|
||||||
|
"raw": "5",
|
||||||
|
"start": 332,
|
||||||
|
"type": "Literal",
|
||||||
|
"type": "Literal",
|
||||||
|
"value": 5
|
||||||
|
},
|
||||||
|
"start": 332,
|
||||||
|
"type": "ExpressionStatement",
|
||||||
|
"type": "ExpressionStatement"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"end": 334,
|
||||||
|
"start": 332
|
||||||
|
},
|
||||||
|
"start": 284,
|
||||||
|
"then_val": {
|
||||||
|
"body": [
|
||||||
|
{
|
||||||
|
"end": 298,
|
||||||
|
"expression": {
|
||||||
|
"end": 298,
|
||||||
|
"raw": "3",
|
||||||
|
"start": 297,
|
||||||
|
"type": "Literal",
|
||||||
|
"type": "Literal",
|
||||||
|
"value": 3
|
||||||
|
},
|
||||||
|
"start": 297,
|
||||||
|
"type": "ExpressionStatement",
|
||||||
|
"type": "ExpressionStatement"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"end": 299,
|
||||||
|
"start": 297
|
||||||
|
},
|
||||||
|
"type": "IfExpression",
|
||||||
|
"type": "IfExpression"
|
||||||
|
},
|
||||||
|
"start": 280,
|
||||||
|
"type": "VariableDeclarator"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"end": 335,
|
||||||
|
"kind": "const",
|
||||||
|
"start": 280,
|
||||||
|
"type": "VariableDeclaration",
|
||||||
|
"type": "VariableDeclaration"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"end": 395,
|
||||||
|
"expression": {
|
||||||
|
"arguments": [
|
||||||
|
{
|
||||||
|
"end": 349,
|
||||||
|
"name": "c",
|
||||||
|
"start": 348,
|
||||||
|
"type": "Identifier",
|
||||||
|
"type": "Identifier"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"end": 352,
|
||||||
|
"raw": "5",
|
||||||
|
"start": 351,
|
||||||
|
"type": "Literal",
|
||||||
|
"type": "Literal",
|
||||||
|
"value": 5
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"end": 359,
|
||||||
|
"raw": "0.001",
|
||||||
|
"start": 354,
|
||||||
|
"type": "Literal",
|
||||||
|
"type": "Literal",
|
||||||
|
"value": 0.001
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"end": 394,
|
||||||
|
"raw": "\"the 'else' branch gets returned\"",
|
||||||
|
"start": 361,
|
||||||
|
"type": "Literal",
|
||||||
|
"type": "Literal",
|
||||||
|
"value": "the 'else' branch gets returned"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"callee": {
|
||||||
|
"end": 347,
|
||||||
|
"name": "assertEqual",
|
||||||
|
"start": 336,
|
||||||
|
"type": "Identifier"
|
||||||
|
},
|
||||||
|
"end": 395,
|
||||||
|
"optional": false,
|
||||||
|
"start": 336,
|
||||||
|
"type": "CallExpression",
|
||||||
|
"type": "CallExpression"
|
||||||
|
},
|
||||||
|
"start": 336,
|
||||||
|
"type": "ExpressionStatement",
|
||||||
|
"type": "ExpressionStatement"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"end": 396,
|
||||||
|
"nonCodeMeta": {
|
||||||
|
"nonCodeNodes": {
|
||||||
|
"1": [
|
||||||
|
{
|
||||||
|
"end": 161,
|
||||||
|
"start": 159,
|
||||||
|
"type": "NonCodeNode",
|
||||||
|
"value": {
|
||||||
|
"type": "newLine"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"3": [
|
||||||
|
{
|
||||||
|
"end": 280,
|
||||||
|
"start": 278,
|
||||||
|
"type": "NonCodeNode",
|
||||||
|
"value": {
|
||||||
|
"type": "newLine"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"startNodes": [
|
||||||
|
{
|
||||||
|
"end": 45,
|
||||||
|
"start": 0,
|
||||||
|
"type": "NonCodeNode",
|
||||||
|
"value": {
|
||||||
|
"type": "blockComment",
|
||||||
|
"value": "This tests evaluating if-else expressions.",
|
||||||
|
"style": "line"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"end": 48,
|
||||||
|
"start": 45,
|
||||||
|
"type": "NonCodeNode",
|
||||||
|
"value": {
|
||||||
|
"type": "newLine"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"start": 0
|
||||||
|
}
|
||||||
|
}
|
@ -1,6 +1,7 @@
|
|||||||
// This tests evaluating if-else expressions.
|
// This tests evaluating if-else expressions.
|
||||||
|
|
||||||
let a = if true {
|
|
||||||
|
a = if true {
|
||||||
3
|
3
|
||||||
} else if true {
|
} else if true {
|
||||||
4
|
4
|
||||||
@ -9,7 +10,7 @@ let a = if true {
|
|||||||
}
|
}
|
||||||
assertEqual(a, 3, 0.001, "the 'if' branch gets returned")
|
assertEqual(a, 3, 0.001, "the 'if' branch gets returned")
|
||||||
|
|
||||||
let b = if false {
|
b = if false {
|
||||||
3
|
3
|
||||||
} else if true {
|
} else if true {
|
||||||
4
|
4
|
||||||
@ -18,7 +19,7 @@ let b = if false {
|
|||||||
}
|
}
|
||||||
assertEqual(b, 4, 0.001, "the 'else if' branch gets returned")
|
assertEqual(b, 4, 0.001, "the 'else if' branch gets returned")
|
||||||
|
|
||||||
let c = if false {
|
c = if false {
|
||||||
3
|
3
|
||||||
} else if false {
|
} else if false {
|
||||||
4
|
4
|
79
src/wasm-lib/kcl/tests/if_else/program_memory.snap
Normal file
79
src/wasm-lib/kcl/tests/if_else/program_memory.snap
Normal file
@ -0,0 +1,79 @@
|
|||||||
|
---
|
||||||
|
source: kcl/src/simulation_tests.rs
|
||||||
|
description: Program memory after executing if_else.kcl
|
||||||
|
snapshot_kind: text
|
||||||
|
---
|
||||||
|
{
|
||||||
|
"environments": [
|
||||||
|
{
|
||||||
|
"bindings": {
|
||||||
|
"HALF_TURN": {
|
||||||
|
"type": "UserVal",
|
||||||
|
"type": "UserVal",
|
||||||
|
"value": 180,
|
||||||
|
"__meta": []
|
||||||
|
},
|
||||||
|
"QUARTER_TURN": {
|
||||||
|
"type": "UserVal",
|
||||||
|
"type": "UserVal",
|
||||||
|
"value": 90,
|
||||||
|
"__meta": []
|
||||||
|
},
|
||||||
|
"THREE_QUARTER_TURN": {
|
||||||
|
"type": "UserVal",
|
||||||
|
"type": "UserVal",
|
||||||
|
"value": 270,
|
||||||
|
"__meta": []
|
||||||
|
},
|
||||||
|
"ZERO": {
|
||||||
|
"type": "UserVal",
|
||||||
|
"type": "UserVal",
|
||||||
|
"value": 0,
|
||||||
|
"__meta": []
|
||||||
|
},
|
||||||
|
"a": {
|
||||||
|
"type": "UserVal",
|
||||||
|
"type": "UserVal",
|
||||||
|
"value": 3,
|
||||||
|
"__meta": [
|
||||||
|
{
|
||||||
|
"sourceRange": [
|
||||||
|
64,
|
||||||
|
65
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"b": {
|
||||||
|
"type": "UserVal",
|
||||||
|
"type": "UserVal",
|
||||||
|
"value": 4,
|
||||||
|
"__meta": [
|
||||||
|
{
|
||||||
|
"sourceRange": [
|
||||||
|
199,
|
||||||
|
200
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"c": {
|
||||||
|
"type": "UserVal",
|
||||||
|
"type": "UserVal",
|
||||||
|
"value": 5,
|
||||||
|
"__meta": [
|
||||||
|
{
|
||||||
|
"sourceRange": [
|
||||||
|
332,
|
||||||
|
333
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"parent": null
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"currentEnv": 0,
|
||||||
|
"return": null
|
||||||
|
}
|
885
src/wasm-lib/kcl/tests/if_else/tokens.snap
Normal file
885
src/wasm-lib/kcl/tests/if_else/tokens.snap
Normal file
@ -0,0 +1,885 @@
|
|||||||
|
---
|
||||||
|
source: kcl/src/simulation_tests.rs
|
||||||
|
description: Result of tokenizing if_else.kcl
|
||||||
|
snapshot_kind: text
|
||||||
|
---
|
||||||
|
{
|
||||||
|
"Ok": [
|
||||||
|
{
|
||||||
|
"type": "lineComment",
|
||||||
|
"start": 0,
|
||||||
|
"end": 45,
|
||||||
|
"value": "// This tests evaluating if-else expressions."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "whitespace",
|
||||||
|
"start": 45,
|
||||||
|
"end": 48,
|
||||||
|
"value": "\n\n\n"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "word",
|
||||||
|
"start": 48,
|
||||||
|
"end": 49,
|
||||||
|
"value": "a"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "whitespace",
|
||||||
|
"start": 49,
|
||||||
|
"end": 50,
|
||||||
|
"value": " "
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "operator",
|
||||||
|
"start": 50,
|
||||||
|
"end": 51,
|
||||||
|
"value": "="
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "whitespace",
|
||||||
|
"start": 51,
|
||||||
|
"end": 52,
|
||||||
|
"value": " "
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "keyword",
|
||||||
|
"start": 52,
|
||||||
|
"end": 54,
|
||||||
|
"value": "if"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "whitespace",
|
||||||
|
"start": 54,
|
||||||
|
"end": 55,
|
||||||
|
"value": " "
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "keyword",
|
||||||
|
"start": 55,
|
||||||
|
"end": 59,
|
||||||
|
"value": "true"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "whitespace",
|
||||||
|
"start": 59,
|
||||||
|
"end": 60,
|
||||||
|
"value": " "
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "brace",
|
||||||
|
"start": 60,
|
||||||
|
"end": 61,
|
||||||
|
"value": "{"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "whitespace",
|
||||||
|
"start": 61,
|
||||||
|
"end": 64,
|
||||||
|
"value": "\n "
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "number",
|
||||||
|
"start": 64,
|
||||||
|
"end": 65,
|
||||||
|
"value": "3"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "whitespace",
|
||||||
|
"start": 65,
|
||||||
|
"end": 66,
|
||||||
|
"value": "\n"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "brace",
|
||||||
|
"start": 66,
|
||||||
|
"end": 67,
|
||||||
|
"value": "}"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "whitespace",
|
||||||
|
"start": 67,
|
||||||
|
"end": 68,
|
||||||
|
"value": " "
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "keyword",
|
||||||
|
"start": 68,
|
||||||
|
"end": 72,
|
||||||
|
"value": "else"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "whitespace",
|
||||||
|
"start": 72,
|
||||||
|
"end": 73,
|
||||||
|
"value": " "
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "keyword",
|
||||||
|
"start": 73,
|
||||||
|
"end": 75,
|
||||||
|
"value": "if"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "whitespace",
|
||||||
|
"start": 75,
|
||||||
|
"end": 76,
|
||||||
|
"value": " "
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "keyword",
|
||||||
|
"start": 76,
|
||||||
|
"end": 80,
|
||||||
|
"value": "true"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "whitespace",
|
||||||
|
"start": 80,
|
||||||
|
"end": 81,
|
||||||
|
"value": " "
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "brace",
|
||||||
|
"start": 81,
|
||||||
|
"end": 82,
|
||||||
|
"value": "{"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "whitespace",
|
||||||
|
"start": 82,
|
||||||
|
"end": 85,
|
||||||
|
"value": "\n "
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "number",
|
||||||
|
"start": 85,
|
||||||
|
"end": 86,
|
||||||
|
"value": "4"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "whitespace",
|
||||||
|
"start": 86,
|
||||||
|
"end": 87,
|
||||||
|
"value": "\n"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "brace",
|
||||||
|
"start": 87,
|
||||||
|
"end": 88,
|
||||||
|
"value": "}"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "whitespace",
|
||||||
|
"start": 88,
|
||||||
|
"end": 89,
|
||||||
|
"value": " "
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "keyword",
|
||||||
|
"start": 89,
|
||||||
|
"end": 93,
|
||||||
|
"value": "else"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "whitespace",
|
||||||
|
"start": 93,
|
||||||
|
"end": 94,
|
||||||
|
"value": " "
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "brace",
|
||||||
|
"start": 94,
|
||||||
|
"end": 95,
|
||||||
|
"value": "{"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "whitespace",
|
||||||
|
"start": 95,
|
||||||
|
"end": 98,
|
||||||
|
"value": "\n "
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "number",
|
||||||
|
"start": 98,
|
||||||
|
"end": 99,
|
||||||
|
"value": "5"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "whitespace",
|
||||||
|
"start": 99,
|
||||||
|
"end": 100,
|
||||||
|
"value": "\n"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "brace",
|
||||||
|
"start": 100,
|
||||||
|
"end": 101,
|
||||||
|
"value": "}"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "whitespace",
|
||||||
|
"start": 101,
|
||||||
|
"end": 102,
|
||||||
|
"value": "\n"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "word",
|
||||||
|
"start": 102,
|
||||||
|
"end": 113,
|
||||||
|
"value": "assertEqual"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "brace",
|
||||||
|
"start": 113,
|
||||||
|
"end": 114,
|
||||||
|
"value": "("
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "word",
|
||||||
|
"start": 114,
|
||||||
|
"end": 115,
|
||||||
|
"value": "a"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "comma",
|
||||||
|
"start": 115,
|
||||||
|
"end": 116,
|
||||||
|
"value": ","
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "whitespace",
|
||||||
|
"start": 116,
|
||||||
|
"end": 117,
|
||||||
|
"value": " "
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "number",
|
||||||
|
"start": 117,
|
||||||
|
"end": 118,
|
||||||
|
"value": "3"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "comma",
|
||||||
|
"start": 118,
|
||||||
|
"end": 119,
|
||||||
|
"value": ","
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "whitespace",
|
||||||
|
"start": 119,
|
||||||
|
"end": 120,
|
||||||
|
"value": " "
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "number",
|
||||||
|
"start": 120,
|
||||||
|
"end": 125,
|
||||||
|
"value": "0.001"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "comma",
|
||||||
|
"start": 125,
|
||||||
|
"end": 126,
|
||||||
|
"value": ","
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "whitespace",
|
||||||
|
"start": 126,
|
||||||
|
"end": 127,
|
||||||
|
"value": " "
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "string",
|
||||||
|
"start": 127,
|
||||||
|
"end": 158,
|
||||||
|
"value": "\"the 'if' branch gets returned\""
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "brace",
|
||||||
|
"start": 158,
|
||||||
|
"end": 159,
|
||||||
|
"value": ")"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "whitespace",
|
||||||
|
"start": 159,
|
||||||
|
"end": 161,
|
||||||
|
"value": "\n\n"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "word",
|
||||||
|
"start": 161,
|
||||||
|
"end": 162,
|
||||||
|
"value": "b"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "whitespace",
|
||||||
|
"start": 162,
|
||||||
|
"end": 163,
|
||||||
|
"value": " "
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "operator",
|
||||||
|
"start": 163,
|
||||||
|
"end": 164,
|
||||||
|
"value": "="
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "whitespace",
|
||||||
|
"start": 164,
|
||||||
|
"end": 165,
|
||||||
|
"value": " "
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "keyword",
|
||||||
|
"start": 165,
|
||||||
|
"end": 167,
|
||||||
|
"value": "if"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "whitespace",
|
||||||
|
"start": 167,
|
||||||
|
"end": 168,
|
||||||
|
"value": " "
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "keyword",
|
||||||
|
"start": 168,
|
||||||
|
"end": 173,
|
||||||
|
"value": "false"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "whitespace",
|
||||||
|
"start": 173,
|
||||||
|
"end": 174,
|
||||||
|
"value": " "
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "brace",
|
||||||
|
"start": 174,
|
||||||
|
"end": 175,
|
||||||
|
"value": "{"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "whitespace",
|
||||||
|
"start": 175,
|
||||||
|
"end": 178,
|
||||||
|
"value": "\n "
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "number",
|
||||||
|
"start": 178,
|
||||||
|
"end": 179,
|
||||||
|
"value": "3"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "whitespace",
|
||||||
|
"start": 179,
|
||||||
|
"end": 180,
|
||||||
|
"value": "\n"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "brace",
|
||||||
|
"start": 180,
|
||||||
|
"end": 181,
|
||||||
|
"value": "}"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "whitespace",
|
||||||
|
"start": 181,
|
||||||
|
"end": 182,
|
||||||
|
"value": " "
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "keyword",
|
||||||
|
"start": 182,
|
||||||
|
"end": 186,
|
||||||
|
"value": "else"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "whitespace",
|
||||||
|
"start": 186,
|
||||||
|
"end": 187,
|
||||||
|
"value": " "
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "keyword",
|
||||||
|
"start": 187,
|
||||||
|
"end": 189,
|
||||||
|
"value": "if"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "whitespace",
|
||||||
|
"start": 189,
|
||||||
|
"end": 190,
|
||||||
|
"value": " "
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "keyword",
|
||||||
|
"start": 190,
|
||||||
|
"end": 194,
|
||||||
|
"value": "true"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "whitespace",
|
||||||
|
"start": 194,
|
||||||
|
"end": 195,
|
||||||
|
"value": " "
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "brace",
|
||||||
|
"start": 195,
|
||||||
|
"end": 196,
|
||||||
|
"value": "{"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "whitespace",
|
||||||
|
"start": 196,
|
||||||
|
"end": 199,
|
||||||
|
"value": "\n "
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "number",
|
||||||
|
"start": 199,
|
||||||
|
"end": 200,
|
||||||
|
"value": "4"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "whitespace",
|
||||||
|
"start": 200,
|
||||||
|
"end": 201,
|
||||||
|
"value": "\n"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "brace",
|
||||||
|
"start": 201,
|
||||||
|
"end": 202,
|
||||||
|
"value": "}"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "whitespace",
|
||||||
|
"start": 202,
|
||||||
|
"end": 203,
|
||||||
|
"value": " "
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "keyword",
|
||||||
|
"start": 203,
|
||||||
|
"end": 207,
|
||||||
|
"value": "else"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "whitespace",
|
||||||
|
"start": 207,
|
||||||
|
"end": 208,
|
||||||
|
"value": " "
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "brace",
|
||||||
|
"start": 208,
|
||||||
|
"end": 209,
|
||||||
|
"value": "{"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "whitespace",
|
||||||
|
"start": 209,
|
||||||
|
"end": 212,
|
||||||
|
"value": "\n "
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "number",
|
||||||
|
"start": 212,
|
||||||
|
"end": 213,
|
||||||
|
"value": "5"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "whitespace",
|
||||||
|
"start": 213,
|
||||||
|
"end": 214,
|
||||||
|
"value": "\n"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "brace",
|
||||||
|
"start": 214,
|
||||||
|
"end": 215,
|
||||||
|
"value": "}"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "whitespace",
|
||||||
|
"start": 215,
|
||||||
|
"end": 216,
|
||||||
|
"value": "\n"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "word",
|
||||||
|
"start": 216,
|
||||||
|
"end": 227,
|
||||||
|
"value": "assertEqual"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "brace",
|
||||||
|
"start": 227,
|
||||||
|
"end": 228,
|
||||||
|
"value": "("
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "word",
|
||||||
|
"start": 228,
|
||||||
|
"end": 229,
|
||||||
|
"value": "b"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "comma",
|
||||||
|
"start": 229,
|
||||||
|
"end": 230,
|
||||||
|
"value": ","
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "whitespace",
|
||||||
|
"start": 230,
|
||||||
|
"end": 231,
|
||||||
|
"value": " "
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "number",
|
||||||
|
"start": 231,
|
||||||
|
"end": 232,
|
||||||
|
"value": "4"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "comma",
|
||||||
|
"start": 232,
|
||||||
|
"end": 233,
|
||||||
|
"value": ","
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "whitespace",
|
||||||
|
"start": 233,
|
||||||
|
"end": 234,
|
||||||
|
"value": " "
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "number",
|
||||||
|
"start": 234,
|
||||||
|
"end": 239,
|
||||||
|
"value": "0.001"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "comma",
|
||||||
|
"start": 239,
|
||||||
|
"end": 240,
|
||||||
|
"value": ","
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "whitespace",
|
||||||
|
"start": 240,
|
||||||
|
"end": 241,
|
||||||
|
"value": " "
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "string",
|
||||||
|
"start": 241,
|
||||||
|
"end": 277,
|
||||||
|
"value": "\"the 'else if' branch gets returned\""
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "brace",
|
||||||
|
"start": 277,
|
||||||
|
"end": 278,
|
||||||
|
"value": ")"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "whitespace",
|
||||||
|
"start": 278,
|
||||||
|
"end": 280,
|
||||||
|
"value": "\n\n"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "word",
|
||||||
|
"start": 280,
|
||||||
|
"end": 281,
|
||||||
|
"value": "c"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "whitespace",
|
||||||
|
"start": 281,
|
||||||
|
"end": 282,
|
||||||
|
"value": " "
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "operator",
|
||||||
|
"start": 282,
|
||||||
|
"end": 283,
|
||||||
|
"value": "="
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "whitespace",
|
||||||
|
"start": 283,
|
||||||
|
"end": 284,
|
||||||
|
"value": " "
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "keyword",
|
||||||
|
"start": 284,
|
||||||
|
"end": 286,
|
||||||
|
"value": "if"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "whitespace",
|
||||||
|
"start": 286,
|
||||||
|
"end": 287,
|
||||||
|
"value": " "
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "keyword",
|
||||||
|
"start": 287,
|
||||||
|
"end": 292,
|
||||||
|
"value": "false"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "whitespace",
|
||||||
|
"start": 292,
|
||||||
|
"end": 293,
|
||||||
|
"value": " "
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "brace",
|
||||||
|
"start": 293,
|
||||||
|
"end": 294,
|
||||||
|
"value": "{"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "whitespace",
|
||||||
|
"start": 294,
|
||||||
|
"end": 297,
|
||||||
|
"value": "\n "
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "number",
|
||||||
|
"start": 297,
|
||||||
|
"end": 298,
|
||||||
|
"value": "3"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "whitespace",
|
||||||
|
"start": 298,
|
||||||
|
"end": 299,
|
||||||
|
"value": "\n"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "brace",
|
||||||
|
"start": 299,
|
||||||
|
"end": 300,
|
||||||
|
"value": "}"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "whitespace",
|
||||||
|
"start": 300,
|
||||||
|
"end": 301,
|
||||||
|
"value": " "
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "keyword",
|
||||||
|
"start": 301,
|
||||||
|
"end": 305,
|
||||||
|
"value": "else"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "whitespace",
|
||||||
|
"start": 305,
|
||||||
|
"end": 306,
|
||||||
|
"value": " "
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "keyword",
|
||||||
|
"start": 306,
|
||||||
|
"end": 308,
|
||||||
|
"value": "if"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "whitespace",
|
||||||
|
"start": 308,
|
||||||
|
"end": 309,
|
||||||
|
"value": " "
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "keyword",
|
||||||
|
"start": 309,
|
||||||
|
"end": 314,
|
||||||
|
"value": "false"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "whitespace",
|
||||||
|
"start": 314,
|
||||||
|
"end": 315,
|
||||||
|
"value": " "
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "brace",
|
||||||
|
"start": 315,
|
||||||
|
"end": 316,
|
||||||
|
"value": "{"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "whitespace",
|
||||||
|
"start": 316,
|
||||||
|
"end": 319,
|
||||||
|
"value": "\n "
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "number",
|
||||||
|
"start": 319,
|
||||||
|
"end": 320,
|
||||||
|
"value": "4"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "whitespace",
|
||||||
|
"start": 320,
|
||||||
|
"end": 321,
|
||||||
|
"value": "\n"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "brace",
|
||||||
|
"start": 321,
|
||||||
|
"end": 322,
|
||||||
|
"value": "}"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "whitespace",
|
||||||
|
"start": 322,
|
||||||
|
"end": 323,
|
||||||
|
"value": " "
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "keyword",
|
||||||
|
"start": 323,
|
||||||
|
"end": 327,
|
||||||
|
"value": "else"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "whitespace",
|
||||||
|
"start": 327,
|
||||||
|
"end": 328,
|
||||||
|
"value": " "
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "brace",
|
||||||
|
"start": 328,
|
||||||
|
"end": 329,
|
||||||
|
"value": "{"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "whitespace",
|
||||||
|
"start": 329,
|
||||||
|
"end": 332,
|
||||||
|
"value": "\n "
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "number",
|
||||||
|
"start": 332,
|
||||||
|
"end": 333,
|
||||||
|
"value": "5"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "whitespace",
|
||||||
|
"start": 333,
|
||||||
|
"end": 334,
|
||||||
|
"value": "\n"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "brace",
|
||||||
|
"start": 334,
|
||||||
|
"end": 335,
|
||||||
|
"value": "}"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "whitespace",
|
||||||
|
"start": 335,
|
||||||
|
"end": 336,
|
||||||
|
"value": "\n"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "word",
|
||||||
|
"start": 336,
|
||||||
|
"end": 347,
|
||||||
|
"value": "assertEqual"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "brace",
|
||||||
|
"start": 347,
|
||||||
|
"end": 348,
|
||||||
|
"value": "("
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "word",
|
||||||
|
"start": 348,
|
||||||
|
"end": 349,
|
||||||
|
"value": "c"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "comma",
|
||||||
|
"start": 349,
|
||||||
|
"end": 350,
|
||||||
|
"value": ","
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "whitespace",
|
||||||
|
"start": 350,
|
||||||
|
"end": 351,
|
||||||
|
"value": " "
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "number",
|
||||||
|
"start": 351,
|
||||||
|
"end": 352,
|
||||||
|
"value": "5"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "comma",
|
||||||
|
"start": 352,
|
||||||
|
"end": 353,
|
||||||
|
"value": ","
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "whitespace",
|
||||||
|
"start": 353,
|
||||||
|
"end": 354,
|
||||||
|
"value": " "
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "number",
|
||||||
|
"start": 354,
|
||||||
|
"end": 359,
|
||||||
|
"value": "0.001"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "comma",
|
||||||
|
"start": 359,
|
||||||
|
"end": 360,
|
||||||
|
"value": ","
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "whitespace",
|
||||||
|
"start": 360,
|
||||||
|
"end": 361,
|
||||||
|
"value": " "
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "string",
|
||||||
|
"start": 361,
|
||||||
|
"end": 394,
|
||||||
|
"value": "\"the 'else' branch gets returned\""
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "brace",
|
||||||
|
"start": 394,
|
||||||
|
"end": 395,
|
||||||
|
"value": ")"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "whitespace",
|
||||||
|
"start": 395,
|
||||||
|
"end": 396,
|
||||||
|
"value": "\n"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
466
src/wasm-lib/kcl/tests/index_of_array/ast.snap
Normal file
466
src/wasm-lib/kcl/tests/index_of_array/ast.snap
Normal file
@ -0,0 +1,466 @@
|
|||||||
|
---
|
||||||
|
source: kcl/src/simulation_tests.rs
|
||||||
|
description: Result of parsing index_of_array.kcl
|
||||||
|
snapshot_kind: text
|
||||||
|
---
|
||||||
|
{
|
||||||
|
"Ok": {
|
||||||
|
"body": [
|
||||||
|
{
|
||||||
|
"declarations": [
|
||||||
|
{
|
||||||
|
"end": 55,
|
||||||
|
"id": {
|
||||||
|
"end": 40,
|
||||||
|
"name": "array",
|
||||||
|
"start": 35,
|
||||||
|
"type": "Identifier"
|
||||||
|
},
|
||||||
|
"init": {
|
||||||
|
"elements": [
|
||||||
|
{
|
||||||
|
"end": 46,
|
||||||
|
"raw": "90",
|
||||||
|
"start": 44,
|
||||||
|
"type": "Literal",
|
||||||
|
"type": "Literal",
|
||||||
|
"value": 90
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"end": 50,
|
||||||
|
"raw": "91",
|
||||||
|
"start": 48,
|
||||||
|
"type": "Literal",
|
||||||
|
"type": "Literal",
|
||||||
|
"value": 91
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"end": 54,
|
||||||
|
"raw": "92",
|
||||||
|
"start": 52,
|
||||||
|
"type": "Literal",
|
||||||
|
"type": "Literal",
|
||||||
|
"value": 92
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"end": 55,
|
||||||
|
"start": 43,
|
||||||
|
"type": "ArrayExpression",
|
||||||
|
"type": "ArrayExpression"
|
||||||
|
},
|
||||||
|
"start": 35,
|
||||||
|
"type": "VariableDeclarator"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"end": 55,
|
||||||
|
"kind": "const",
|
||||||
|
"start": 35,
|
||||||
|
"type": "VariableDeclaration",
|
||||||
|
"type": "VariableDeclaration"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"declarations": [
|
||||||
|
{
|
||||||
|
"end": 101,
|
||||||
|
"id": {
|
||||||
|
"end": 90,
|
||||||
|
"name": "result0",
|
||||||
|
"start": 83,
|
||||||
|
"type": "Identifier"
|
||||||
|
},
|
||||||
|
"init": {
|
||||||
|
"computed": false,
|
||||||
|
"end": 101,
|
||||||
|
"object": {
|
||||||
|
"end": 98,
|
||||||
|
"name": "array",
|
||||||
|
"start": 93,
|
||||||
|
"type": "Identifier",
|
||||||
|
"type": "Identifier"
|
||||||
|
},
|
||||||
|
"property": {
|
||||||
|
"end": 100,
|
||||||
|
"raw": "1",
|
||||||
|
"start": 99,
|
||||||
|
"type": "Literal",
|
||||||
|
"type": "Literal",
|
||||||
|
"value": 1
|
||||||
|
},
|
||||||
|
"start": 93,
|
||||||
|
"type": "MemberExpression",
|
||||||
|
"type": "MemberExpression"
|
||||||
|
},
|
||||||
|
"start": 83,
|
||||||
|
"type": "VariableDeclarator"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"end": 101,
|
||||||
|
"kind": "const",
|
||||||
|
"start": 83,
|
||||||
|
"type": "VariableDeclaration",
|
||||||
|
"type": "VariableDeclaration"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"end": 161,
|
||||||
|
"expression": {
|
||||||
|
"arguments": [
|
||||||
|
{
|
||||||
|
"end": 129,
|
||||||
|
"name": "result0",
|
||||||
|
"start": 122,
|
||||||
|
"type": "Identifier",
|
||||||
|
"type": "Identifier"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"end": 133,
|
||||||
|
"raw": "91",
|
||||||
|
"start": 131,
|
||||||
|
"type": "Literal",
|
||||||
|
"type": "Literal",
|
||||||
|
"value": 91
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"end": 160,
|
||||||
|
"raw": "\"Literal property lookup\"",
|
||||||
|
"start": 135,
|
||||||
|
"type": "Literal",
|
||||||
|
"type": "Literal",
|
||||||
|
"value": "Literal property lookup"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"callee": {
|
||||||
|
"end": 121,
|
||||||
|
"name": "assertLessThanOrEq",
|
||||||
|
"start": 103,
|
||||||
|
"type": "Identifier"
|
||||||
|
},
|
||||||
|
"end": 161,
|
||||||
|
"optional": false,
|
||||||
|
"start": 103,
|
||||||
|
"type": "CallExpression",
|
||||||
|
"type": "CallExpression"
|
||||||
|
},
|
||||||
|
"start": 103,
|
||||||
|
"type": "ExpressionStatement",
|
||||||
|
"type": "ExpressionStatement"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"end": 223,
|
||||||
|
"expression": {
|
||||||
|
"arguments": [
|
||||||
|
{
|
||||||
|
"end": 191,
|
||||||
|
"name": "result0",
|
||||||
|
"start": 184,
|
||||||
|
"type": "Identifier",
|
||||||
|
"type": "Identifier"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"end": 195,
|
||||||
|
"raw": "91",
|
||||||
|
"start": 193,
|
||||||
|
"type": "Literal",
|
||||||
|
"type": "Literal",
|
||||||
|
"value": 91
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"end": 222,
|
||||||
|
"raw": "\"Literal property lookup\"",
|
||||||
|
"start": 197,
|
||||||
|
"type": "Literal",
|
||||||
|
"type": "Literal",
|
||||||
|
"value": "Literal property lookup"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"callee": {
|
||||||
|
"end": 183,
|
||||||
|
"name": "assertGreaterThanOrEq",
|
||||||
|
"start": 162,
|
||||||
|
"type": "Identifier"
|
||||||
|
},
|
||||||
|
"end": 223,
|
||||||
|
"optional": false,
|
||||||
|
"start": 162,
|
||||||
|
"type": "CallExpression",
|
||||||
|
"type": "CallExpression"
|
||||||
|
},
|
||||||
|
"start": 162,
|
||||||
|
"type": "ExpressionStatement",
|
||||||
|
"type": "ExpressionStatement"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"declarations": [
|
||||||
|
{
|
||||||
|
"end": 266,
|
||||||
|
"id": {
|
||||||
|
"end": 253,
|
||||||
|
"name": "i",
|
||||||
|
"start": 252,
|
||||||
|
"type": "Identifier"
|
||||||
|
},
|
||||||
|
"init": {
|
||||||
|
"arguments": [
|
||||||
|
{
|
||||||
|
"end": 265,
|
||||||
|
"left": {
|
||||||
|
"end": 261,
|
||||||
|
"raw": "1",
|
||||||
|
"start": 260,
|
||||||
|
"type": "Literal",
|
||||||
|
"type": "Literal",
|
||||||
|
"value": 1
|
||||||
|
},
|
||||||
|
"operator": "+",
|
||||||
|
"right": {
|
||||||
|
"end": 265,
|
||||||
|
"raw": "0",
|
||||||
|
"start": 264,
|
||||||
|
"type": "Literal",
|
||||||
|
"type": "Literal",
|
||||||
|
"value": 0
|
||||||
|
},
|
||||||
|
"start": 260,
|
||||||
|
"type": "BinaryExpression",
|
||||||
|
"type": "BinaryExpression"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"callee": {
|
||||||
|
"end": 259,
|
||||||
|
"name": "int",
|
||||||
|
"start": 256,
|
||||||
|
"type": "Identifier"
|
||||||
|
},
|
||||||
|
"end": 266,
|
||||||
|
"optional": false,
|
||||||
|
"start": 256,
|
||||||
|
"type": "CallExpression",
|
||||||
|
"type": "CallExpression"
|
||||||
|
},
|
||||||
|
"start": 252,
|
||||||
|
"type": "VariableDeclarator"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"end": 266,
|
||||||
|
"kind": "const",
|
||||||
|
"start": 252,
|
||||||
|
"type": "VariableDeclaration",
|
||||||
|
"type": "VariableDeclaration"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"declarations": [
|
||||||
|
{
|
||||||
|
"end": 285,
|
||||||
|
"id": {
|
||||||
|
"end": 274,
|
||||||
|
"name": "result1",
|
||||||
|
"start": 267,
|
||||||
|
"type": "Identifier"
|
||||||
|
},
|
||||||
|
"init": {
|
||||||
|
"computed": true,
|
||||||
|
"end": 285,
|
||||||
|
"object": {
|
||||||
|
"end": 282,
|
||||||
|
"name": "array",
|
||||||
|
"start": 277,
|
||||||
|
"type": "Identifier",
|
||||||
|
"type": "Identifier"
|
||||||
|
},
|
||||||
|
"property": {
|
||||||
|
"end": 284,
|
||||||
|
"name": "i",
|
||||||
|
"start": 283,
|
||||||
|
"type": "Identifier",
|
||||||
|
"type": "Identifier"
|
||||||
|
},
|
||||||
|
"start": 277,
|
||||||
|
"type": "MemberExpression",
|
||||||
|
"type": "MemberExpression"
|
||||||
|
},
|
||||||
|
"start": 267,
|
||||||
|
"type": "VariableDeclarator"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"end": 285,
|
||||||
|
"kind": "const",
|
||||||
|
"start": 267,
|
||||||
|
"type": "VariableDeclaration",
|
||||||
|
"type": "VariableDeclaration"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"end": 346,
|
||||||
|
"expression": {
|
||||||
|
"arguments": [
|
||||||
|
{
|
||||||
|
"end": 313,
|
||||||
|
"name": "result1",
|
||||||
|
"start": 306,
|
||||||
|
"type": "Identifier",
|
||||||
|
"type": "Identifier"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"end": 317,
|
||||||
|
"raw": "91",
|
||||||
|
"start": 315,
|
||||||
|
"type": "Literal",
|
||||||
|
"type": "Literal",
|
||||||
|
"value": 91
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"end": 345,
|
||||||
|
"raw": "\"Computed property lookup\"",
|
||||||
|
"start": 319,
|
||||||
|
"type": "Literal",
|
||||||
|
"type": "Literal",
|
||||||
|
"value": "Computed property lookup"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"callee": {
|
||||||
|
"end": 305,
|
||||||
|
"name": "assertLessThanOrEq",
|
||||||
|
"start": 287,
|
||||||
|
"type": "Identifier"
|
||||||
|
},
|
||||||
|
"end": 346,
|
||||||
|
"optional": false,
|
||||||
|
"start": 287,
|
||||||
|
"type": "CallExpression",
|
||||||
|
"type": "CallExpression"
|
||||||
|
},
|
||||||
|
"start": 287,
|
||||||
|
"type": "ExpressionStatement",
|
||||||
|
"type": "ExpressionStatement"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"end": 409,
|
||||||
|
"expression": {
|
||||||
|
"arguments": [
|
||||||
|
{
|
||||||
|
"end": 376,
|
||||||
|
"name": "result1",
|
||||||
|
"start": 369,
|
||||||
|
"type": "Identifier",
|
||||||
|
"type": "Identifier"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"end": 380,
|
||||||
|
"raw": "91",
|
||||||
|
"start": 378,
|
||||||
|
"type": "Literal",
|
||||||
|
"type": "Literal",
|
||||||
|
"value": 91
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"end": 408,
|
||||||
|
"raw": "\"Computed property lookup\"",
|
||||||
|
"start": 382,
|
||||||
|
"type": "Literal",
|
||||||
|
"type": "Literal",
|
||||||
|
"value": "Computed property lookup"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"callee": {
|
||||||
|
"end": 368,
|
||||||
|
"name": "assertGreaterThanOrEq",
|
||||||
|
"start": 347,
|
||||||
|
"type": "Identifier"
|
||||||
|
},
|
||||||
|
"end": 409,
|
||||||
|
"optional": false,
|
||||||
|
"start": 347,
|
||||||
|
"type": "CallExpression",
|
||||||
|
"type": "CallExpression"
|
||||||
|
},
|
||||||
|
"start": 347,
|
||||||
|
"type": "ExpressionStatement",
|
||||||
|
"type": "ExpressionStatement"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"end": 410,
|
||||||
|
"nonCodeMeta": {
|
||||||
|
"nonCodeNodes": {
|
||||||
|
"0": [
|
||||||
|
{
|
||||||
|
"end": 80,
|
||||||
|
"start": 55,
|
||||||
|
"type": "NonCodeNode",
|
||||||
|
"value": {
|
||||||
|
"type": "newLineBlockComment",
|
||||||
|
"value": "Test: literal index.",
|
||||||
|
"style": "line"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"end": 83,
|
||||||
|
"start": 80,
|
||||||
|
"type": "NonCodeNode",
|
||||||
|
"value": {
|
||||||
|
"type": "newLine"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"1": [
|
||||||
|
{
|
||||||
|
"end": 103,
|
||||||
|
"start": 101,
|
||||||
|
"type": "NonCodeNode",
|
||||||
|
"value": {
|
||||||
|
"type": "newLine"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"3": [
|
||||||
|
{
|
||||||
|
"end": 249,
|
||||||
|
"start": 223,
|
||||||
|
"type": "NonCodeNode",
|
||||||
|
"value": {
|
||||||
|
"type": "newLineBlockComment",
|
||||||
|
"value": "Test: computed index.",
|
||||||
|
"style": "line"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"end": 252,
|
||||||
|
"start": 249,
|
||||||
|
"type": "NonCodeNode",
|
||||||
|
"value": {
|
||||||
|
"type": "newLine"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"5": [
|
||||||
|
{
|
||||||
|
"end": 287,
|
||||||
|
"start": 285,
|
||||||
|
"type": "NonCodeNode",
|
||||||
|
"value": {
|
||||||
|
"type": "newLine"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"startNodes": [
|
||||||
|
{
|
||||||
|
"end": 32,
|
||||||
|
"start": 0,
|
||||||
|
"type": "NonCodeNode",
|
||||||
|
"value": {
|
||||||
|
"type": "blockComment",
|
||||||
|
"value": "This tests indexing an array.",
|
||||||
|
"style": "line"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"end": 35,
|
||||||
|
"start": 32,
|
||||||
|
"type": "NonCodeNode",
|
||||||
|
"value": {
|
||||||
|
"type": "newLine"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"start": 0
|
||||||
|
}
|
||||||
|
}
|
@ -1,18 +1,21 @@
|
|||||||
// This tests indexing an array.
|
// This tests indexing an array.
|
||||||
|
|
||||||
const array = [90, 91, 92]
|
|
||||||
|
array = [90, 91, 92]
|
||||||
|
|
||||||
// Test: literal index.
|
// Test: literal index.
|
||||||
|
|
||||||
const result0 = array[1]
|
|
||||||
|
result0 = array[1]
|
||||||
|
|
||||||
assertLessThanOrEq(result0, 91, "Literal property lookup")
|
assertLessThanOrEq(result0, 91, "Literal property lookup")
|
||||||
assertGreaterThanOrEq(result0, 91, "Literal property lookup")
|
assertGreaterThanOrEq(result0, 91, "Literal property lookup")
|
||||||
|
|
||||||
// Test: computed index.
|
// Test: computed index.
|
||||||
|
|
||||||
const i = int(1 + 0)
|
|
||||||
const result1 = array[i]
|
i = int(1 + 0)
|
||||||
|
result1 = array[i]
|
||||||
|
|
||||||
assertLessThanOrEq(result1, 91, "Computed property lookup")
|
assertLessThanOrEq(result1, 91, "Computed property lookup")
|
||||||
assertGreaterThanOrEq(result1, 91, "Computed property lookup")
|
assertGreaterThanOrEq(result1, 91, "Computed property lookup")
|
96
src/wasm-lib/kcl/tests/index_of_array/program_memory.snap
Normal file
96
src/wasm-lib/kcl/tests/index_of_array/program_memory.snap
Normal file
@ -0,0 +1,96 @@
|
|||||||
|
---
|
||||||
|
source: kcl/src/simulation_tests.rs
|
||||||
|
description: Program memory after executing index_of_array.kcl
|
||||||
|
snapshot_kind: text
|
||||||
|
---
|
||||||
|
{
|
||||||
|
"environments": [
|
||||||
|
{
|
||||||
|
"bindings": {
|
||||||
|
"HALF_TURN": {
|
||||||
|
"type": "UserVal",
|
||||||
|
"type": "UserVal",
|
||||||
|
"value": 180,
|
||||||
|
"__meta": []
|
||||||
|
},
|
||||||
|
"QUARTER_TURN": {
|
||||||
|
"type": "UserVal",
|
||||||
|
"type": "UserVal",
|
||||||
|
"value": 90,
|
||||||
|
"__meta": []
|
||||||
|
},
|
||||||
|
"THREE_QUARTER_TURN": {
|
||||||
|
"type": "UserVal",
|
||||||
|
"type": "UserVal",
|
||||||
|
"value": 270,
|
||||||
|
"__meta": []
|
||||||
|
},
|
||||||
|
"ZERO": {
|
||||||
|
"type": "UserVal",
|
||||||
|
"type": "UserVal",
|
||||||
|
"value": 0,
|
||||||
|
"__meta": []
|
||||||
|
},
|
||||||
|
"array": {
|
||||||
|
"type": "UserVal",
|
||||||
|
"type": "UserVal",
|
||||||
|
"value": [
|
||||||
|
90,
|
||||||
|
91,
|
||||||
|
92
|
||||||
|
],
|
||||||
|
"__meta": [
|
||||||
|
{
|
||||||
|
"sourceRange": [
|
||||||
|
43,
|
||||||
|
55
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"i": {
|
||||||
|
"type": "UserVal",
|
||||||
|
"type": "UserVal",
|
||||||
|
"value": 1,
|
||||||
|
"__meta": [
|
||||||
|
{
|
||||||
|
"sourceRange": [
|
||||||
|
256,
|
||||||
|
266
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"result0": {
|
||||||
|
"type": "UserVal",
|
||||||
|
"type": "UserVal",
|
||||||
|
"value": 91,
|
||||||
|
"__meta": [
|
||||||
|
{
|
||||||
|
"sourceRange": [
|
||||||
|
93,
|
||||||
|
101
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"result1": {
|
||||||
|
"type": "UserVal",
|
||||||
|
"type": "UserVal",
|
||||||
|
"value": 91,
|
||||||
|
"__meta": [
|
||||||
|
{
|
||||||
|
"sourceRange": [
|
||||||
|
277,
|
||||||
|
285
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"parent": null
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"currentEnv": 0,
|
||||||
|
"return": null
|
||||||
|
}
|
579
src/wasm-lib/kcl/tests/index_of_array/tokens.snap
Normal file
579
src/wasm-lib/kcl/tests/index_of_array/tokens.snap
Normal file
@ -0,0 +1,579 @@
|
|||||||
|
---
|
||||||
|
source: kcl/src/simulation_tests.rs
|
||||||
|
description: Result of tokenizing index_of_array.kcl
|
||||||
|
snapshot_kind: text
|
||||||
|
---
|
||||||
|
{
|
||||||
|
"Ok": [
|
||||||
|
{
|
||||||
|
"type": "lineComment",
|
||||||
|
"start": 0,
|
||||||
|
"end": 32,
|
||||||
|
"value": "// This tests indexing an array."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "whitespace",
|
||||||
|
"start": 32,
|
||||||
|
"end": 35,
|
||||||
|
"value": "\n\n\n"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "word",
|
||||||
|
"start": 35,
|
||||||
|
"end": 40,
|
||||||
|
"value": "array"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "whitespace",
|
||||||
|
"start": 40,
|
||||||
|
"end": 41,
|
||||||
|
"value": " "
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "operator",
|
||||||
|
"start": 41,
|
||||||
|
"end": 42,
|
||||||
|
"value": "="
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "whitespace",
|
||||||
|
"start": 42,
|
||||||
|
"end": 43,
|
||||||
|
"value": " "
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "brace",
|
||||||
|
"start": 43,
|
||||||
|
"end": 44,
|
||||||
|
"value": "["
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "number",
|
||||||
|
"start": 44,
|
||||||
|
"end": 46,
|
||||||
|
"value": "90"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "comma",
|
||||||
|
"start": 46,
|
||||||
|
"end": 47,
|
||||||
|
"value": ","
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "whitespace",
|
||||||
|
"start": 47,
|
||||||
|
"end": 48,
|
||||||
|
"value": " "
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "number",
|
||||||
|
"start": 48,
|
||||||
|
"end": 50,
|
||||||
|
"value": "91"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "comma",
|
||||||
|
"start": 50,
|
||||||
|
"end": 51,
|
||||||
|
"value": ","
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "whitespace",
|
||||||
|
"start": 51,
|
||||||
|
"end": 52,
|
||||||
|
"value": " "
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "number",
|
||||||
|
"start": 52,
|
||||||
|
"end": 54,
|
||||||
|
"value": "92"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "brace",
|
||||||
|
"start": 54,
|
||||||
|
"end": 55,
|
||||||
|
"value": "]"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "whitespace",
|
||||||
|
"start": 55,
|
||||||
|
"end": 57,
|
||||||
|
"value": "\n\n"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "lineComment",
|
||||||
|
"start": 57,
|
||||||
|
"end": 80,
|
||||||
|
"value": "// Test: literal index."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "whitespace",
|
||||||
|
"start": 80,
|
||||||
|
"end": 83,
|
||||||
|
"value": "\n\n\n"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "word",
|
||||||
|
"start": 83,
|
||||||
|
"end": 90,
|
||||||
|
"value": "result0"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "whitespace",
|
||||||
|
"start": 90,
|
||||||
|
"end": 91,
|
||||||
|
"value": " "
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "operator",
|
||||||
|
"start": 91,
|
||||||
|
"end": 92,
|
||||||
|
"value": "="
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "whitespace",
|
||||||
|
"start": 92,
|
||||||
|
"end": 93,
|
||||||
|
"value": " "
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "word",
|
||||||
|
"start": 93,
|
||||||
|
"end": 98,
|
||||||
|
"value": "array"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "brace",
|
||||||
|
"start": 98,
|
||||||
|
"end": 99,
|
||||||
|
"value": "["
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "number",
|
||||||
|
"start": 99,
|
||||||
|
"end": 100,
|
||||||
|
"value": "1"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "brace",
|
||||||
|
"start": 100,
|
||||||
|
"end": 101,
|
||||||
|
"value": "]"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "whitespace",
|
||||||
|
"start": 101,
|
||||||
|
"end": 103,
|
||||||
|
"value": "\n\n"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "word",
|
||||||
|
"start": 103,
|
||||||
|
"end": 121,
|
||||||
|
"value": "assertLessThanOrEq"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "brace",
|
||||||
|
"start": 121,
|
||||||
|
"end": 122,
|
||||||
|
"value": "("
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "word",
|
||||||
|
"start": 122,
|
||||||
|
"end": 129,
|
||||||
|
"value": "result0"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "comma",
|
||||||
|
"start": 129,
|
||||||
|
"end": 130,
|
||||||
|
"value": ","
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "whitespace",
|
||||||
|
"start": 130,
|
||||||
|
"end": 131,
|
||||||
|
"value": " "
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "number",
|
||||||
|
"start": 131,
|
||||||
|
"end": 133,
|
||||||
|
"value": "91"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "comma",
|
||||||
|
"start": 133,
|
||||||
|
"end": 134,
|
||||||
|
"value": ","
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "whitespace",
|
||||||
|
"start": 134,
|
||||||
|
"end": 135,
|
||||||
|
"value": " "
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "string",
|
||||||
|
"start": 135,
|
||||||
|
"end": 160,
|
||||||
|
"value": "\"Literal property lookup\""
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "brace",
|
||||||
|
"start": 160,
|
||||||
|
"end": 161,
|
||||||
|
"value": ")"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "whitespace",
|
||||||
|
"start": 161,
|
||||||
|
"end": 162,
|
||||||
|
"value": "\n"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "word",
|
||||||
|
"start": 162,
|
||||||
|
"end": 183,
|
||||||
|
"value": "assertGreaterThanOrEq"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "brace",
|
||||||
|
"start": 183,
|
||||||
|
"end": 184,
|
||||||
|
"value": "("
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "word",
|
||||||
|
"start": 184,
|
||||||
|
"end": 191,
|
||||||
|
"value": "result0"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "comma",
|
||||||
|
"start": 191,
|
||||||
|
"end": 192,
|
||||||
|
"value": ","
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "whitespace",
|
||||||
|
"start": 192,
|
||||||
|
"end": 193,
|
||||||
|
"value": " "
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "number",
|
||||||
|
"start": 193,
|
||||||
|
"end": 195,
|
||||||
|
"value": "91"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "comma",
|
||||||
|
"start": 195,
|
||||||
|
"end": 196,
|
||||||
|
"value": ","
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "whitespace",
|
||||||
|
"start": 196,
|
||||||
|
"end": 197,
|
||||||
|
"value": " "
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "string",
|
||||||
|
"start": 197,
|
||||||
|
"end": 222,
|
||||||
|
"value": "\"Literal property lookup\""
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "brace",
|
||||||
|
"start": 222,
|
||||||
|
"end": 223,
|
||||||
|
"value": ")"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "whitespace",
|
||||||
|
"start": 223,
|
||||||
|
"end": 225,
|
||||||
|
"value": "\n\n"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "lineComment",
|
||||||
|
"start": 225,
|
||||||
|
"end": 249,
|
||||||
|
"value": "// Test: computed index."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "whitespace",
|
||||||
|
"start": 249,
|
||||||
|
"end": 252,
|
||||||
|
"value": "\n\n\n"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "word",
|
||||||
|
"start": 252,
|
||||||
|
"end": 253,
|
||||||
|
"value": "i"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "whitespace",
|
||||||
|
"start": 253,
|
||||||
|
"end": 254,
|
||||||
|
"value": " "
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "operator",
|
||||||
|
"start": 254,
|
||||||
|
"end": 255,
|
||||||
|
"value": "="
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "whitespace",
|
||||||
|
"start": 255,
|
||||||
|
"end": 256,
|
||||||
|
"value": " "
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "word",
|
||||||
|
"start": 256,
|
||||||
|
"end": 259,
|
||||||
|
"value": "int"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "brace",
|
||||||
|
"start": 259,
|
||||||
|
"end": 260,
|
||||||
|
"value": "("
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "number",
|
||||||
|
"start": 260,
|
||||||
|
"end": 261,
|
||||||
|
"value": "1"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "whitespace",
|
||||||
|
"start": 261,
|
||||||
|
"end": 262,
|
||||||
|
"value": " "
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "operator",
|
||||||
|
"start": 262,
|
||||||
|
"end": 263,
|
||||||
|
"value": "+"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "whitespace",
|
||||||
|
"start": 263,
|
||||||
|
"end": 264,
|
||||||
|
"value": " "
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "number",
|
||||||
|
"start": 264,
|
||||||
|
"end": 265,
|
||||||
|
"value": "0"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "brace",
|
||||||
|
"start": 265,
|
||||||
|
"end": 266,
|
||||||
|
"value": ")"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "whitespace",
|
||||||
|
"start": 266,
|
||||||
|
"end": 267,
|
||||||
|
"value": "\n"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "word",
|
||||||
|
"start": 267,
|
||||||
|
"end": 274,
|
||||||
|
"value": "result1"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "whitespace",
|
||||||
|
"start": 274,
|
||||||
|
"end": 275,
|
||||||
|
"value": " "
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "operator",
|
||||||
|
"start": 275,
|
||||||
|
"end": 276,
|
||||||
|
"value": "="
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "whitespace",
|
||||||
|
"start": 276,
|
||||||
|
"end": 277,
|
||||||
|
"value": " "
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "word",
|
||||||
|
"start": 277,
|
||||||
|
"end": 282,
|
||||||
|
"value": "array"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "brace",
|
||||||
|
"start": 282,
|
||||||
|
"end": 283,
|
||||||
|
"value": "["
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "word",
|
||||||
|
"start": 283,
|
||||||
|
"end": 284,
|
||||||
|
"value": "i"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "brace",
|
||||||
|
"start": 284,
|
||||||
|
"end": 285,
|
||||||
|
"value": "]"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "whitespace",
|
||||||
|
"start": 285,
|
||||||
|
"end": 287,
|
||||||
|
"value": "\n\n"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "word",
|
||||||
|
"start": 287,
|
||||||
|
"end": 305,
|
||||||
|
"value": "assertLessThanOrEq"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "brace",
|
||||||
|
"start": 305,
|
||||||
|
"end": 306,
|
||||||
|
"value": "("
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "word",
|
||||||
|
"start": 306,
|
||||||
|
"end": 313,
|
||||||
|
"value": "result1"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "comma",
|
||||||
|
"start": 313,
|
||||||
|
"end": 314,
|
||||||
|
"value": ","
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "whitespace",
|
||||||
|
"start": 314,
|
||||||
|
"end": 315,
|
||||||
|
"value": " "
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "number",
|
||||||
|
"start": 315,
|
||||||
|
"end": 317,
|
||||||
|
"value": "91"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "comma",
|
||||||
|
"start": 317,
|
||||||
|
"end": 318,
|
||||||
|
"value": ","
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "whitespace",
|
||||||
|
"start": 318,
|
||||||
|
"end": 319,
|
||||||
|
"value": " "
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "string",
|
||||||
|
"start": 319,
|
||||||
|
"end": 345,
|
||||||
|
"value": "\"Computed property lookup\""
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "brace",
|
||||||
|
"start": 345,
|
||||||
|
"end": 346,
|
||||||
|
"value": ")"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "whitespace",
|
||||||
|
"start": 346,
|
||||||
|
"end": 347,
|
||||||
|
"value": "\n"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "word",
|
||||||
|
"start": 347,
|
||||||
|
"end": 368,
|
||||||
|
"value": "assertGreaterThanOrEq"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "brace",
|
||||||
|
"start": 368,
|
||||||
|
"end": 369,
|
||||||
|
"value": "("
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "word",
|
||||||
|
"start": 369,
|
||||||
|
"end": 376,
|
||||||
|
"value": "result1"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "comma",
|
||||||
|
"start": 376,
|
||||||
|
"end": 377,
|
||||||
|
"value": ","
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "whitespace",
|
||||||
|
"start": 377,
|
||||||
|
"end": 378,
|
||||||
|
"value": " "
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "number",
|
||||||
|
"start": 378,
|
||||||
|
"end": 380,
|
||||||
|
"value": "91"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "comma",
|
||||||
|
"start": 380,
|
||||||
|
"end": 381,
|
||||||
|
"value": ","
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "whitespace",
|
||||||
|
"start": 381,
|
||||||
|
"end": 382,
|
||||||
|
"value": " "
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "string",
|
||||||
|
"start": 382,
|
||||||
|
"end": 408,
|
||||||
|
"value": "\"Computed property lookup\""
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "brace",
|
||||||
|
"start": 408,
|
||||||
|
"end": 409,
|
||||||
|
"value": ")"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "whitespace",
|
||||||
|
"start": 409,
|
||||||
|
"end": 410,
|
||||||
|
"value": "\n"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
863
src/wasm-lib/kcl/tests/property_of_object/ast.snap
Normal file
863
src/wasm-lib/kcl/tests/property_of_object/ast.snap
Normal file
@ -0,0 +1,863 @@
|
|||||||
|
---
|
||||||
|
source: kcl/src/simulation_tests.rs
|
||||||
|
description: Result of parsing property_of_object.kcl
|
||||||
|
snapshot_kind: text
|
||||||
|
---
|
||||||
|
{
|
||||||
|
"Ok": {
|
||||||
|
"body": [
|
||||||
|
{
|
||||||
|
"declarations": [
|
||||||
|
{
|
||||||
|
"end": 74,
|
||||||
|
"id": {
|
||||||
|
"end": 53,
|
||||||
|
"name": "obj",
|
||||||
|
"start": 50,
|
||||||
|
"type": "Identifier"
|
||||||
|
},
|
||||||
|
"init": {
|
||||||
|
"end": 74,
|
||||||
|
"properties": [
|
||||||
|
{
|
||||||
|
"end": 64,
|
||||||
|
"key": {
|
||||||
|
"end": 61,
|
||||||
|
"name": "foo",
|
||||||
|
"start": 58,
|
||||||
|
"type": "Identifier"
|
||||||
|
},
|
||||||
|
"start": 58,
|
||||||
|
"type": "ObjectProperty",
|
||||||
|
"value": {
|
||||||
|
"end": 64,
|
||||||
|
"raw": "1",
|
||||||
|
"start": 63,
|
||||||
|
"type": "Literal",
|
||||||
|
"type": "Literal",
|
||||||
|
"value": 1
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"end": 72,
|
||||||
|
"key": {
|
||||||
|
"end": 69,
|
||||||
|
"name": "bar",
|
||||||
|
"start": 66,
|
||||||
|
"type": "Identifier"
|
||||||
|
},
|
||||||
|
"start": 66,
|
||||||
|
"type": "ObjectProperty",
|
||||||
|
"value": {
|
||||||
|
"end": 72,
|
||||||
|
"raw": "0",
|
||||||
|
"start": 71,
|
||||||
|
"type": "Literal",
|
||||||
|
"type": "Literal",
|
||||||
|
"value": 0
|
||||||
|
}
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"start": 56,
|
||||||
|
"type": "ObjectExpression",
|
||||||
|
"type": "ObjectExpression"
|
||||||
|
},
|
||||||
|
"start": 50,
|
||||||
|
"type": "VariableDeclarator"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"end": 74,
|
||||||
|
"kind": "const",
|
||||||
|
"start": 50,
|
||||||
|
"type": "VariableDeclaration",
|
||||||
|
"type": "VariableDeclaration"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"declarations": [
|
||||||
|
{
|
||||||
|
"end": 132,
|
||||||
|
"id": {
|
||||||
|
"end": 119,
|
||||||
|
"name": "one_a",
|
||||||
|
"start": 114,
|
||||||
|
"type": "Identifier"
|
||||||
|
},
|
||||||
|
"init": {
|
||||||
|
"computed": false,
|
||||||
|
"end": 132,
|
||||||
|
"object": {
|
||||||
|
"end": 125,
|
||||||
|
"name": "obj",
|
||||||
|
"start": 122,
|
||||||
|
"type": "Identifier",
|
||||||
|
"type": "Identifier"
|
||||||
|
},
|
||||||
|
"property": {
|
||||||
|
"end": 131,
|
||||||
|
"raw": "\"foo\"",
|
||||||
|
"start": 126,
|
||||||
|
"type": "Literal",
|
||||||
|
"type": "Literal",
|
||||||
|
"value": "foo"
|
||||||
|
},
|
||||||
|
"start": 122,
|
||||||
|
"type": "MemberExpression",
|
||||||
|
"type": "MemberExpression"
|
||||||
|
},
|
||||||
|
"start": 114,
|
||||||
|
"type": "VariableDeclarator"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"end": 132,
|
||||||
|
"kind": "const",
|
||||||
|
"start": 114,
|
||||||
|
"type": "VariableDeclaration",
|
||||||
|
"type": "VariableDeclaration"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"end": 189,
|
||||||
|
"expression": {
|
||||||
|
"arguments": [
|
||||||
|
{
|
||||||
|
"end": 158,
|
||||||
|
"name": "one_a",
|
||||||
|
"start": 153,
|
||||||
|
"type": "Identifier",
|
||||||
|
"type": "Identifier"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"end": 161,
|
||||||
|
"raw": "1",
|
||||||
|
"start": 160,
|
||||||
|
"type": "Literal",
|
||||||
|
"type": "Literal",
|
||||||
|
"value": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"end": 188,
|
||||||
|
"raw": "\"Literal property lookup\"",
|
||||||
|
"start": 163,
|
||||||
|
"type": "Literal",
|
||||||
|
"type": "Literal",
|
||||||
|
"value": "Literal property lookup"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"callee": {
|
||||||
|
"end": 152,
|
||||||
|
"name": "assertLessThanOrEq",
|
||||||
|
"start": 134,
|
||||||
|
"type": "Identifier"
|
||||||
|
},
|
||||||
|
"end": 189,
|
||||||
|
"optional": false,
|
||||||
|
"start": 134,
|
||||||
|
"type": "CallExpression",
|
||||||
|
"type": "CallExpression"
|
||||||
|
},
|
||||||
|
"start": 134,
|
||||||
|
"type": "ExpressionStatement",
|
||||||
|
"type": "ExpressionStatement"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"end": 248,
|
||||||
|
"expression": {
|
||||||
|
"arguments": [
|
||||||
|
{
|
||||||
|
"end": 217,
|
||||||
|
"name": "one_a",
|
||||||
|
"start": 212,
|
||||||
|
"type": "Identifier",
|
||||||
|
"type": "Identifier"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"end": 220,
|
||||||
|
"raw": "1",
|
||||||
|
"start": 219,
|
||||||
|
"type": "Literal",
|
||||||
|
"type": "Literal",
|
||||||
|
"value": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"end": 247,
|
||||||
|
"raw": "\"Literal property lookup\"",
|
||||||
|
"start": 222,
|
||||||
|
"type": "Literal",
|
||||||
|
"type": "Literal",
|
||||||
|
"value": "Literal property lookup"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"callee": {
|
||||||
|
"end": 211,
|
||||||
|
"name": "assertGreaterThanOrEq",
|
||||||
|
"start": 190,
|
||||||
|
"type": "Identifier"
|
||||||
|
},
|
||||||
|
"end": 248,
|
||||||
|
"optional": false,
|
||||||
|
"start": 190,
|
||||||
|
"type": "CallExpression",
|
||||||
|
"type": "CallExpression"
|
||||||
|
},
|
||||||
|
"start": 190,
|
||||||
|
"type": "ExpressionStatement",
|
||||||
|
"type": "ExpressionStatement"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"declarations": [
|
||||||
|
{
|
||||||
|
"end": 347,
|
||||||
|
"id": {
|
||||||
|
"end": 339,
|
||||||
|
"name": "p",
|
||||||
|
"start": 338,
|
||||||
|
"type": "Identifier"
|
||||||
|
},
|
||||||
|
"init": {
|
||||||
|
"end": 347,
|
||||||
|
"raw": "\"foo\"",
|
||||||
|
"start": 342,
|
||||||
|
"type": "Literal",
|
||||||
|
"type": "Literal",
|
||||||
|
"value": "foo"
|
||||||
|
},
|
||||||
|
"start": 338,
|
||||||
|
"type": "VariableDeclarator"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"end": 347,
|
||||||
|
"kind": "const",
|
||||||
|
"start": 338,
|
||||||
|
"type": "VariableDeclaration",
|
||||||
|
"type": "VariableDeclaration"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"declarations": [
|
||||||
|
{
|
||||||
|
"end": 362,
|
||||||
|
"id": {
|
||||||
|
"end": 353,
|
||||||
|
"name": "one_b",
|
||||||
|
"start": 348,
|
||||||
|
"type": "Identifier"
|
||||||
|
},
|
||||||
|
"init": {
|
||||||
|
"computed": true,
|
||||||
|
"end": 362,
|
||||||
|
"object": {
|
||||||
|
"end": 359,
|
||||||
|
"name": "obj",
|
||||||
|
"start": 356,
|
||||||
|
"type": "Identifier",
|
||||||
|
"type": "Identifier"
|
||||||
|
},
|
||||||
|
"property": {
|
||||||
|
"end": 361,
|
||||||
|
"name": "p",
|
||||||
|
"start": 360,
|
||||||
|
"type": "Identifier",
|
||||||
|
"type": "Identifier"
|
||||||
|
},
|
||||||
|
"start": 356,
|
||||||
|
"type": "MemberExpression",
|
||||||
|
"type": "MemberExpression"
|
||||||
|
},
|
||||||
|
"start": 348,
|
||||||
|
"type": "VariableDeclarator"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"end": 362,
|
||||||
|
"kind": "const",
|
||||||
|
"start": 348,
|
||||||
|
"type": "VariableDeclaration",
|
||||||
|
"type": "VariableDeclaration"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"end": 420,
|
||||||
|
"expression": {
|
||||||
|
"arguments": [
|
||||||
|
{
|
||||||
|
"end": 388,
|
||||||
|
"name": "one_b",
|
||||||
|
"start": 383,
|
||||||
|
"type": "Identifier",
|
||||||
|
"type": "Identifier"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"end": 391,
|
||||||
|
"raw": "1",
|
||||||
|
"start": 390,
|
||||||
|
"type": "Literal",
|
||||||
|
"type": "Literal",
|
||||||
|
"value": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"end": 419,
|
||||||
|
"raw": "\"Computed property lookup\"",
|
||||||
|
"start": 393,
|
||||||
|
"type": "Literal",
|
||||||
|
"type": "Literal",
|
||||||
|
"value": "Computed property lookup"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"callee": {
|
||||||
|
"end": 382,
|
||||||
|
"name": "assertLessThanOrEq",
|
||||||
|
"start": 364,
|
||||||
|
"type": "Identifier"
|
||||||
|
},
|
||||||
|
"end": 420,
|
||||||
|
"optional": false,
|
||||||
|
"start": 364,
|
||||||
|
"type": "CallExpression",
|
||||||
|
"type": "CallExpression"
|
||||||
|
},
|
||||||
|
"start": 364,
|
||||||
|
"type": "ExpressionStatement",
|
||||||
|
"type": "ExpressionStatement"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"end": 480,
|
||||||
|
"expression": {
|
||||||
|
"arguments": [
|
||||||
|
{
|
||||||
|
"end": 448,
|
||||||
|
"name": "one_b",
|
||||||
|
"start": 443,
|
||||||
|
"type": "Identifier",
|
||||||
|
"type": "Identifier"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"end": 451,
|
||||||
|
"raw": "1",
|
||||||
|
"start": 450,
|
||||||
|
"type": "Literal",
|
||||||
|
"type": "Literal",
|
||||||
|
"value": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"end": 479,
|
||||||
|
"raw": "\"Computed property lookup\"",
|
||||||
|
"start": 453,
|
||||||
|
"type": "Literal",
|
||||||
|
"type": "Literal",
|
||||||
|
"value": "Computed property lookup"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"callee": {
|
||||||
|
"end": 442,
|
||||||
|
"name": "assertGreaterThanOrEq",
|
||||||
|
"start": 421,
|
||||||
|
"type": "Identifier"
|
||||||
|
},
|
||||||
|
"end": 480,
|
||||||
|
"optional": false,
|
||||||
|
"start": 421,
|
||||||
|
"type": "CallExpression",
|
||||||
|
"type": "CallExpression"
|
||||||
|
},
|
||||||
|
"start": 421,
|
||||||
|
"type": "ExpressionStatement",
|
||||||
|
"type": "ExpressionStatement"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"declarations": [
|
||||||
|
{
|
||||||
|
"end": 543,
|
||||||
|
"id": {
|
||||||
|
"end": 526,
|
||||||
|
"name": "obj2",
|
||||||
|
"start": 522,
|
||||||
|
"type": "Identifier"
|
||||||
|
},
|
||||||
|
"init": {
|
||||||
|
"end": 543,
|
||||||
|
"properties": [
|
||||||
|
{
|
||||||
|
"end": 541,
|
||||||
|
"key": {
|
||||||
|
"end": 536,
|
||||||
|
"name": "inner",
|
||||||
|
"start": 531,
|
||||||
|
"type": "Identifier"
|
||||||
|
},
|
||||||
|
"start": 531,
|
||||||
|
"type": "ObjectProperty",
|
||||||
|
"value": {
|
||||||
|
"end": 541,
|
||||||
|
"name": "obj",
|
||||||
|
"start": 538,
|
||||||
|
"type": "Identifier",
|
||||||
|
"type": "Identifier"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"start": 529,
|
||||||
|
"type": "ObjectExpression",
|
||||||
|
"type": "ObjectExpression"
|
||||||
|
},
|
||||||
|
"start": 522,
|
||||||
|
"type": "VariableDeclarator"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"end": 543,
|
||||||
|
"kind": "const",
|
||||||
|
"start": 522,
|
||||||
|
"type": "VariableDeclaration",
|
||||||
|
"type": "VariableDeclaration"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"declarations": [
|
||||||
|
{
|
||||||
|
"end": 570,
|
||||||
|
"id": {
|
||||||
|
"end": 550,
|
||||||
|
"name": "one_c",
|
||||||
|
"start": 545,
|
||||||
|
"type": "Identifier"
|
||||||
|
},
|
||||||
|
"init": {
|
||||||
|
"computed": false,
|
||||||
|
"end": 570,
|
||||||
|
"object": {
|
||||||
|
"computed": false,
|
||||||
|
"end": 563,
|
||||||
|
"object": {
|
||||||
|
"end": 557,
|
||||||
|
"name": "obj2",
|
||||||
|
"start": 553,
|
||||||
|
"type": "Identifier",
|
||||||
|
"type": "Identifier"
|
||||||
|
},
|
||||||
|
"property": {
|
||||||
|
"end": 563,
|
||||||
|
"name": "inner",
|
||||||
|
"start": 558,
|
||||||
|
"type": "Identifier",
|
||||||
|
"type": "Identifier"
|
||||||
|
},
|
||||||
|
"start": 553,
|
||||||
|
"type": "MemberExpression",
|
||||||
|
"type": "MemberExpression"
|
||||||
|
},
|
||||||
|
"property": {
|
||||||
|
"end": 569,
|
||||||
|
"raw": "\"foo\"",
|
||||||
|
"start": 564,
|
||||||
|
"type": "Literal",
|
||||||
|
"type": "Literal",
|
||||||
|
"value": "foo"
|
||||||
|
},
|
||||||
|
"start": 553,
|
||||||
|
"type": "MemberExpression",
|
||||||
|
"type": "MemberExpression"
|
||||||
|
},
|
||||||
|
"start": 545,
|
||||||
|
"type": "VariableDeclarator"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"end": 570,
|
||||||
|
"kind": "const",
|
||||||
|
"start": 545,
|
||||||
|
"type": "VariableDeclaration",
|
||||||
|
"type": "VariableDeclaration"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"end": 627,
|
||||||
|
"expression": {
|
||||||
|
"arguments": [
|
||||||
|
{
|
||||||
|
"end": 596,
|
||||||
|
"name": "one_c",
|
||||||
|
"start": 591,
|
||||||
|
"type": "Identifier",
|
||||||
|
"type": "Identifier"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"end": 599,
|
||||||
|
"raw": "1",
|
||||||
|
"start": 598,
|
||||||
|
"type": "Literal",
|
||||||
|
"type": "Literal",
|
||||||
|
"value": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"end": 626,
|
||||||
|
"raw": "\"Literal property lookup\"",
|
||||||
|
"start": 601,
|
||||||
|
"type": "Literal",
|
||||||
|
"type": "Literal",
|
||||||
|
"value": "Literal property lookup"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"callee": {
|
||||||
|
"end": 590,
|
||||||
|
"name": "assertLessThanOrEq",
|
||||||
|
"start": 572,
|
||||||
|
"type": "Identifier"
|
||||||
|
},
|
||||||
|
"end": 627,
|
||||||
|
"optional": false,
|
||||||
|
"start": 572,
|
||||||
|
"type": "CallExpression",
|
||||||
|
"type": "CallExpression"
|
||||||
|
},
|
||||||
|
"start": 572,
|
||||||
|
"type": "ExpressionStatement",
|
||||||
|
"type": "ExpressionStatement"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"end": 686,
|
||||||
|
"expression": {
|
||||||
|
"arguments": [
|
||||||
|
{
|
||||||
|
"end": 655,
|
||||||
|
"name": "one_c",
|
||||||
|
"start": 650,
|
||||||
|
"type": "Identifier",
|
||||||
|
"type": "Identifier"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"end": 658,
|
||||||
|
"raw": "1",
|
||||||
|
"start": 657,
|
||||||
|
"type": "Literal",
|
||||||
|
"type": "Literal",
|
||||||
|
"value": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"end": 685,
|
||||||
|
"raw": "\"Literal property lookup\"",
|
||||||
|
"start": 660,
|
||||||
|
"type": "Literal",
|
||||||
|
"type": "Literal",
|
||||||
|
"value": "Literal property lookup"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"callee": {
|
||||||
|
"end": 649,
|
||||||
|
"name": "assertGreaterThanOrEq",
|
||||||
|
"start": 628,
|
||||||
|
"type": "Identifier"
|
||||||
|
},
|
||||||
|
"end": 686,
|
||||||
|
"optional": false,
|
||||||
|
"start": 628,
|
||||||
|
"type": "CallExpression",
|
||||||
|
"type": "CallExpression"
|
||||||
|
},
|
||||||
|
"start": 628,
|
||||||
|
"type": "ExpressionStatement",
|
||||||
|
"type": "ExpressionStatement"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"declarations": [
|
||||||
|
{
|
||||||
|
"end": 770,
|
||||||
|
"id": {
|
||||||
|
"end": 754,
|
||||||
|
"name": "one_d",
|
||||||
|
"start": 749,
|
||||||
|
"type": "Identifier"
|
||||||
|
},
|
||||||
|
"init": {
|
||||||
|
"computed": true,
|
||||||
|
"end": 770,
|
||||||
|
"object": {
|
||||||
|
"computed": false,
|
||||||
|
"end": 767,
|
||||||
|
"object": {
|
||||||
|
"end": 761,
|
||||||
|
"name": "obj2",
|
||||||
|
"start": 757,
|
||||||
|
"type": "Identifier",
|
||||||
|
"type": "Identifier"
|
||||||
|
},
|
||||||
|
"property": {
|
||||||
|
"end": 767,
|
||||||
|
"name": "inner",
|
||||||
|
"start": 762,
|
||||||
|
"type": "Identifier",
|
||||||
|
"type": "Identifier"
|
||||||
|
},
|
||||||
|
"start": 757,
|
||||||
|
"type": "MemberExpression",
|
||||||
|
"type": "MemberExpression"
|
||||||
|
},
|
||||||
|
"property": {
|
||||||
|
"end": 769,
|
||||||
|
"name": "p",
|
||||||
|
"start": 768,
|
||||||
|
"type": "Identifier",
|
||||||
|
"type": "Identifier"
|
||||||
|
},
|
||||||
|
"start": 757,
|
||||||
|
"type": "MemberExpression",
|
||||||
|
"type": "MemberExpression"
|
||||||
|
},
|
||||||
|
"start": 749,
|
||||||
|
"type": "VariableDeclarator"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"end": 770,
|
||||||
|
"kind": "const",
|
||||||
|
"start": 749,
|
||||||
|
"type": "VariableDeclaration",
|
||||||
|
"type": "VariableDeclaration"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"end": 828,
|
||||||
|
"expression": {
|
||||||
|
"arguments": [
|
||||||
|
{
|
||||||
|
"end": 796,
|
||||||
|
"name": "one_d",
|
||||||
|
"start": 791,
|
||||||
|
"type": "Identifier",
|
||||||
|
"type": "Identifier"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"end": 799,
|
||||||
|
"raw": "1",
|
||||||
|
"start": 798,
|
||||||
|
"type": "Literal",
|
||||||
|
"type": "Literal",
|
||||||
|
"value": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"end": 827,
|
||||||
|
"raw": "\"Computed property lookup\"",
|
||||||
|
"start": 801,
|
||||||
|
"type": "Literal",
|
||||||
|
"type": "Literal",
|
||||||
|
"value": "Computed property lookup"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"callee": {
|
||||||
|
"end": 790,
|
||||||
|
"name": "assertLessThanOrEq",
|
||||||
|
"start": 772,
|
||||||
|
"type": "Identifier"
|
||||||
|
},
|
||||||
|
"end": 828,
|
||||||
|
"optional": false,
|
||||||
|
"start": 772,
|
||||||
|
"type": "CallExpression",
|
||||||
|
"type": "CallExpression"
|
||||||
|
},
|
||||||
|
"start": 772,
|
||||||
|
"type": "ExpressionStatement",
|
||||||
|
"type": "ExpressionStatement"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"end": 888,
|
||||||
|
"expression": {
|
||||||
|
"arguments": [
|
||||||
|
{
|
||||||
|
"end": 856,
|
||||||
|
"name": "one_d",
|
||||||
|
"start": 851,
|
||||||
|
"type": "Identifier",
|
||||||
|
"type": "Identifier"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"end": 859,
|
||||||
|
"raw": "1",
|
||||||
|
"start": 858,
|
||||||
|
"type": "Literal",
|
||||||
|
"type": "Literal",
|
||||||
|
"value": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"end": 887,
|
||||||
|
"raw": "\"Computed property lookup\"",
|
||||||
|
"start": 861,
|
||||||
|
"type": "Literal",
|
||||||
|
"type": "Literal",
|
||||||
|
"value": "Computed property lookup"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"callee": {
|
||||||
|
"end": 850,
|
||||||
|
"name": "assertGreaterThanOrEq",
|
||||||
|
"start": 829,
|
||||||
|
"type": "Identifier"
|
||||||
|
},
|
||||||
|
"end": 888,
|
||||||
|
"optional": false,
|
||||||
|
"start": 829,
|
||||||
|
"type": "CallExpression",
|
||||||
|
"type": "CallExpression"
|
||||||
|
},
|
||||||
|
"start": 829,
|
||||||
|
"type": "ExpressionStatement",
|
||||||
|
"type": "ExpressionStatement"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"end": 889,
|
||||||
|
"nonCodeMeta": {
|
||||||
|
"nonCodeNodes": {
|
||||||
|
"0": [
|
||||||
|
{
|
||||||
|
"end": 111,
|
||||||
|
"start": 74,
|
||||||
|
"type": "NonCodeNode",
|
||||||
|
"value": {
|
||||||
|
"type": "newLineBlockComment",
|
||||||
|
"value": "Test: the property is a literal.",
|
||||||
|
"style": "line"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"end": 114,
|
||||||
|
"start": 111,
|
||||||
|
"type": "NonCodeNode",
|
||||||
|
"value": {
|
||||||
|
"type": "newLine"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"1": [
|
||||||
|
{
|
||||||
|
"end": 134,
|
||||||
|
"start": 132,
|
||||||
|
"type": "NonCodeNode",
|
||||||
|
"value": {
|
||||||
|
"type": "newLine"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"3": [
|
||||||
|
{
|
||||||
|
"end": 286,
|
||||||
|
"start": 248,
|
||||||
|
"type": "NonCodeNode",
|
||||||
|
"value": {
|
||||||
|
"type": "newLineBlockComment",
|
||||||
|
"value": "Test: the property is a variable,",
|
||||||
|
"style": "line"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"end": 335,
|
||||||
|
"start": 287,
|
||||||
|
"type": "NonCodeNode",
|
||||||
|
"value": {
|
||||||
|
"type": "blockComment",
|
||||||
|
"value": "which must be evaluated before looking it up.",
|
||||||
|
"style": "line"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"end": 338,
|
||||||
|
"start": 335,
|
||||||
|
"type": "NonCodeNode",
|
||||||
|
"value": {
|
||||||
|
"type": "newLine"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"5": [
|
||||||
|
{
|
||||||
|
"end": 364,
|
||||||
|
"start": 362,
|
||||||
|
"type": "NonCodeNode",
|
||||||
|
"value": {
|
||||||
|
"type": "newLine"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"7": [
|
||||||
|
{
|
||||||
|
"end": 519,
|
||||||
|
"start": 480,
|
||||||
|
"type": "NonCodeNode",
|
||||||
|
"value": {
|
||||||
|
"type": "newLineBlockComment",
|
||||||
|
"value": "Test: multiple literal properties.",
|
||||||
|
"style": "line"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"end": 522,
|
||||||
|
"start": 519,
|
||||||
|
"type": "NonCodeNode",
|
||||||
|
"value": {
|
||||||
|
"type": "newLine"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"8": [
|
||||||
|
{
|
||||||
|
"end": 545,
|
||||||
|
"start": 543,
|
||||||
|
"type": "NonCodeNode",
|
||||||
|
"value": {
|
||||||
|
"type": "newLine"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"9": [
|
||||||
|
{
|
||||||
|
"end": 572,
|
||||||
|
"start": 570,
|
||||||
|
"type": "NonCodeNode",
|
||||||
|
"value": {
|
||||||
|
"type": "newLine"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"11": [
|
||||||
|
{
|
||||||
|
"end": 746,
|
||||||
|
"start": 686,
|
||||||
|
"type": "NonCodeNode",
|
||||||
|
"value": {
|
||||||
|
"type": "newLineBlockComment",
|
||||||
|
"value": "Test: multiple properties, mix of literal and computed.",
|
||||||
|
"style": "line"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"end": 749,
|
||||||
|
"start": 746,
|
||||||
|
"type": "NonCodeNode",
|
||||||
|
"value": {
|
||||||
|
"type": "newLine"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"12": [
|
||||||
|
{
|
||||||
|
"end": 772,
|
||||||
|
"start": 770,
|
||||||
|
"type": "NonCodeNode",
|
||||||
|
"value": {
|
||||||
|
"type": "newLine"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"startNodes": [
|
||||||
|
{
|
||||||
|
"end": 47,
|
||||||
|
"start": 0,
|
||||||
|
"type": "NonCodeNode",
|
||||||
|
"value": {
|
||||||
|
"type": "blockComment",
|
||||||
|
"value": "This tests evaluating properties of objects.",
|
||||||
|
"style": "line"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"end": 50,
|
||||||
|
"start": 47,
|
||||||
|
"type": "NonCodeNode",
|
||||||
|
"value": {
|
||||||
|
"type": "newLine"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"start": 0
|
||||||
|
}
|
||||||
|
}
|
@ -1,40 +1,40 @@
|
|||||||
// This tests evaluating properties of objects.
|
// This tests evaluating properties of objects.
|
||||||
|
|
||||||
const obj = {
|
|
||||||
foo: 1,
|
obj = { foo: 1, bar: 0 }
|
||||||
bar: 0,
|
|
||||||
}
|
|
||||||
|
|
||||||
// Test: the property is a literal.
|
// Test: the property is a literal.
|
||||||
|
|
||||||
const one_a = obj["foo"]
|
|
||||||
|
|
||||||
assertLessThanOrEq(one_a, 1, "Literal property lookup")
|
one_a = obj["foo"]
|
||||||
|
|
||||||
|
assertLessThanOrEq(one_a, 1, "Literal property lookup")
|
||||||
assertGreaterThanOrEq(one_a, 1, "Literal property lookup")
|
assertGreaterThanOrEq(one_a, 1, "Literal property lookup")
|
||||||
|
|
||||||
// Test: the property is a variable,
|
// Test: the property is a variable,
|
||||||
// which must be evaluated before looking it up.
|
// which must be evaluated before looking it up.
|
||||||
|
|
||||||
const p = "foo"
|
|
||||||
const one_b = obj[p]
|
|
||||||
|
|
||||||
assertLessThanOrEq(one_b, 1, "Computed property lookup")
|
p = "foo"
|
||||||
|
one_b = obj[p]
|
||||||
|
|
||||||
|
assertLessThanOrEq(one_b, 1, "Computed property lookup")
|
||||||
assertGreaterThanOrEq(one_b, 1, "Computed property lookup")
|
assertGreaterThanOrEq(one_b, 1, "Computed property lookup")
|
||||||
|
|
||||||
// Test: multiple literal properties.
|
// Test: multiple literal properties.
|
||||||
|
|
||||||
const obj2 = {
|
|
||||||
inner: obj,
|
|
||||||
}
|
|
||||||
|
|
||||||
const one_c = obj2.inner["foo"]
|
obj2 = { inner: obj }
|
||||||
|
|
||||||
assertLessThanOrEq(one_c, 1, "Literal property lookup")
|
one_c = obj2.inner["foo"]
|
||||||
|
|
||||||
|
assertLessThanOrEq(one_c, 1, "Literal property lookup")
|
||||||
assertGreaterThanOrEq(one_c, 1, "Literal property lookup")
|
assertGreaterThanOrEq(one_c, 1, "Literal property lookup")
|
||||||
|
|
||||||
// Test: multiple properties, mix of literal and computed.
|
// Test: multiple properties, mix of literal and computed.
|
||||||
|
|
||||||
const one_d = obj2.inner[p]
|
|
||||||
|
|
||||||
assertLessThanOrEq(one_d, 1, "Computed property lookup")
|
one_d = obj2.inner[p]
|
||||||
|
|
||||||
|
assertLessThanOrEq(one_d, 1, "Computed property lookup")
|
||||||
assertGreaterThanOrEq(one_d, 1, "Computed property lookup")
|
assertGreaterThanOrEq(one_d, 1, "Computed property lookup")
|
139
src/wasm-lib/kcl/tests/property_of_object/program_memory.snap
Normal file
139
src/wasm-lib/kcl/tests/property_of_object/program_memory.snap
Normal file
@ -0,0 +1,139 @@
|
|||||||
|
---
|
||||||
|
source: kcl/src/simulation_tests.rs
|
||||||
|
description: Program memory after executing property_of_object.kcl
|
||||||
|
snapshot_kind: text
|
||||||
|
---
|
||||||
|
{
|
||||||
|
"environments": [
|
||||||
|
{
|
||||||
|
"bindings": {
|
||||||
|
"HALF_TURN": {
|
||||||
|
"type": "UserVal",
|
||||||
|
"type": "UserVal",
|
||||||
|
"value": 180,
|
||||||
|
"__meta": []
|
||||||
|
},
|
||||||
|
"QUARTER_TURN": {
|
||||||
|
"type": "UserVal",
|
||||||
|
"type": "UserVal",
|
||||||
|
"value": 90,
|
||||||
|
"__meta": []
|
||||||
|
},
|
||||||
|
"THREE_QUARTER_TURN": {
|
||||||
|
"type": "UserVal",
|
||||||
|
"type": "UserVal",
|
||||||
|
"value": 270,
|
||||||
|
"__meta": []
|
||||||
|
},
|
||||||
|
"ZERO": {
|
||||||
|
"type": "UserVal",
|
||||||
|
"type": "UserVal",
|
||||||
|
"value": 0,
|
||||||
|
"__meta": []
|
||||||
|
},
|
||||||
|
"obj": {
|
||||||
|
"type": "UserVal",
|
||||||
|
"type": "UserVal",
|
||||||
|
"value": {
|
||||||
|
"bar": 0,
|
||||||
|
"foo": 1
|
||||||
|
},
|
||||||
|
"__meta": [
|
||||||
|
{
|
||||||
|
"sourceRange": [
|
||||||
|
56,
|
||||||
|
74
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"obj2": {
|
||||||
|
"type": "UserVal",
|
||||||
|
"type": "UserVal",
|
||||||
|
"value": {
|
||||||
|
"inner": {
|
||||||
|
"bar": 0,
|
||||||
|
"foo": 1
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"__meta": [
|
||||||
|
{
|
||||||
|
"sourceRange": [
|
||||||
|
529,
|
||||||
|
543
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"one_a": {
|
||||||
|
"type": "UserVal",
|
||||||
|
"type": "UserVal",
|
||||||
|
"value": 1,
|
||||||
|
"__meta": [
|
||||||
|
{
|
||||||
|
"sourceRange": [
|
||||||
|
122,
|
||||||
|
132
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"one_b": {
|
||||||
|
"type": "UserVal",
|
||||||
|
"type": "UserVal",
|
||||||
|
"value": 1,
|
||||||
|
"__meta": [
|
||||||
|
{
|
||||||
|
"sourceRange": [
|
||||||
|
356,
|
||||||
|
362
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"one_c": {
|
||||||
|
"type": "UserVal",
|
||||||
|
"type": "UserVal",
|
||||||
|
"value": 1,
|
||||||
|
"__meta": [
|
||||||
|
{
|
||||||
|
"sourceRange": [
|
||||||
|
553,
|
||||||
|
570
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"one_d": {
|
||||||
|
"type": "UserVal",
|
||||||
|
"type": "UserVal",
|
||||||
|
"value": 1,
|
||||||
|
"__meta": [
|
||||||
|
{
|
||||||
|
"sourceRange": [
|
||||||
|
757,
|
||||||
|
770
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"p": {
|
||||||
|
"type": "UserVal",
|
||||||
|
"type": "UserVal",
|
||||||
|
"value": "foo",
|
||||||
|
"__meta": [
|
||||||
|
{
|
||||||
|
"sourceRange": [
|
||||||
|
342,
|
||||||
|
347
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"parent": null
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"currentEnv": 0,
|
||||||
|
"return": null
|
||||||
|
}
|
1077
src/wasm-lib/kcl/tests/property_of_object/tokens.snap
Normal file
1077
src/wasm-lib/kcl/tests/property_of_object/tokens.snap
Normal file
File diff suppressed because it is too large
Load Diff
845
src/wasm-lib/kcl/tests/sketch_in_object/ast.snap
Normal file
845
src/wasm-lib/kcl/tests/sketch_in_object/ast.snap
Normal file
@ -0,0 +1,845 @@
|
|||||||
|
---
|
||||||
|
source: kcl/src/simulation_tests.rs
|
||||||
|
description: Result of parsing sketch_in_object.kcl
|
||||||
|
snapshot_kind: text
|
||||||
|
---
|
||||||
|
{
|
||||||
|
"Ok": {
|
||||||
|
"body": [
|
||||||
|
{
|
||||||
|
"declarations": [
|
||||||
|
{
|
||||||
|
"end": 157,
|
||||||
|
"id": {
|
||||||
|
"end": 7,
|
||||||
|
"name": "test",
|
||||||
|
"start": 3,
|
||||||
|
"type": "Identifier"
|
||||||
|
},
|
||||||
|
"init": {
|
||||||
|
"body": {
|
||||||
|
"body": [
|
||||||
|
{
|
||||||
|
"argument": {
|
||||||
|
"body": [
|
||||||
|
{
|
||||||
|
"arguments": [
|
||||||
|
{
|
||||||
|
"end": 45,
|
||||||
|
"raw": "'XY'",
|
||||||
|
"start": 41,
|
||||||
|
"type": "Literal",
|
||||||
|
"type": "Literal",
|
||||||
|
"value": "XY"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"callee": {
|
||||||
|
"end": 40,
|
||||||
|
"name": "startSketchOn",
|
||||||
|
"start": 27,
|
||||||
|
"type": "Identifier"
|
||||||
|
},
|
||||||
|
"end": 46,
|
||||||
|
"optional": false,
|
||||||
|
"start": 27,
|
||||||
|
"type": "CallExpression",
|
||||||
|
"type": "CallExpression"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"arguments": [
|
||||||
|
{
|
||||||
|
"elements": [
|
||||||
|
{
|
||||||
|
"end": 69,
|
||||||
|
"raw": "0",
|
||||||
|
"start": 68,
|
||||||
|
"type": "Literal",
|
||||||
|
"type": "Literal",
|
||||||
|
"value": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"end": 72,
|
||||||
|
"raw": "0",
|
||||||
|
"start": 71,
|
||||||
|
"type": "Literal",
|
||||||
|
"type": "Literal",
|
||||||
|
"value": 0
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"end": 73,
|
||||||
|
"start": 67,
|
||||||
|
"type": "ArrayExpression",
|
||||||
|
"type": "ArrayExpression"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"end": 76,
|
||||||
|
"start": 75,
|
||||||
|
"type": "PipeSubstitution",
|
||||||
|
"type": "PipeSubstitution"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"callee": {
|
||||||
|
"end": 66,
|
||||||
|
"name": "startProfileAt",
|
||||||
|
"start": 52,
|
||||||
|
"type": "Identifier"
|
||||||
|
},
|
||||||
|
"end": 77,
|
||||||
|
"optional": false,
|
||||||
|
"start": 52,
|
||||||
|
"type": "CallExpression",
|
||||||
|
"type": "CallExpression"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"arguments": [
|
||||||
|
{
|
||||||
|
"elements": [
|
||||||
|
{
|
||||||
|
"end": 90,
|
||||||
|
"raw": "0",
|
||||||
|
"start": 89,
|
||||||
|
"type": "Literal",
|
||||||
|
"type": "Literal",
|
||||||
|
"value": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"end": 93,
|
||||||
|
"raw": "1",
|
||||||
|
"start": 92,
|
||||||
|
"type": "Literal",
|
||||||
|
"type": "Literal",
|
||||||
|
"value": 1
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"end": 94,
|
||||||
|
"start": 88,
|
||||||
|
"type": "ArrayExpression",
|
||||||
|
"type": "ArrayExpression"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"end": 97,
|
||||||
|
"start": 96,
|
||||||
|
"type": "PipeSubstitution",
|
||||||
|
"type": "PipeSubstitution"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"callee": {
|
||||||
|
"end": 87,
|
||||||
|
"name": "line",
|
||||||
|
"start": 83,
|
||||||
|
"type": "Identifier"
|
||||||
|
},
|
||||||
|
"end": 98,
|
||||||
|
"optional": false,
|
||||||
|
"start": 83,
|
||||||
|
"type": "CallExpression",
|
||||||
|
"type": "CallExpression"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"arguments": [
|
||||||
|
{
|
||||||
|
"elements": [
|
||||||
|
{
|
||||||
|
"end": 111,
|
||||||
|
"raw": "1",
|
||||||
|
"start": 110,
|
||||||
|
"type": "Literal",
|
||||||
|
"type": "Literal",
|
||||||
|
"value": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"end": 114,
|
||||||
|
"raw": "0",
|
||||||
|
"start": 113,
|
||||||
|
"type": "Literal",
|
||||||
|
"type": "Literal",
|
||||||
|
"value": 0
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"end": 115,
|
||||||
|
"start": 109,
|
||||||
|
"type": "ArrayExpression",
|
||||||
|
"type": "ArrayExpression"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"end": 118,
|
||||||
|
"start": 117,
|
||||||
|
"type": "PipeSubstitution",
|
||||||
|
"type": "PipeSubstitution"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"callee": {
|
||||||
|
"end": 108,
|
||||||
|
"name": "line",
|
||||||
|
"start": 104,
|
||||||
|
"type": "Identifier"
|
||||||
|
},
|
||||||
|
"end": 119,
|
||||||
|
"optional": false,
|
||||||
|
"start": 104,
|
||||||
|
"type": "CallExpression",
|
||||||
|
"type": "CallExpression"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"arguments": [
|
||||||
|
{
|
||||||
|
"elements": [
|
||||||
|
{
|
||||||
|
"end": 132,
|
||||||
|
"raw": "0",
|
||||||
|
"start": 131,
|
||||||
|
"type": "Literal",
|
||||||
|
"type": "Literal",
|
||||||
|
"value": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"argument": {
|
||||||
|
"end": 136,
|
||||||
|
"raw": "1",
|
||||||
|
"start": 135,
|
||||||
|
"type": "Literal",
|
||||||
|
"type": "Literal",
|
||||||
|
"value": 1
|
||||||
|
},
|
||||||
|
"end": 136,
|
||||||
|
"operator": "-",
|
||||||
|
"start": 134,
|
||||||
|
"type": "UnaryExpression",
|
||||||
|
"type": "UnaryExpression"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"end": 137,
|
||||||
|
"start": 130,
|
||||||
|
"type": "ArrayExpression",
|
||||||
|
"type": "ArrayExpression"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"end": 140,
|
||||||
|
"start": 139,
|
||||||
|
"type": "PipeSubstitution",
|
||||||
|
"type": "PipeSubstitution"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"callee": {
|
||||||
|
"end": 129,
|
||||||
|
"name": "line",
|
||||||
|
"start": 125,
|
||||||
|
"type": "Identifier"
|
||||||
|
},
|
||||||
|
"end": 141,
|
||||||
|
"optional": false,
|
||||||
|
"start": 125,
|
||||||
|
"type": "CallExpression",
|
||||||
|
"type": "CallExpression"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"arguments": [
|
||||||
|
{
|
||||||
|
"end": 154,
|
||||||
|
"start": 153,
|
||||||
|
"type": "PipeSubstitution",
|
||||||
|
"type": "PipeSubstitution"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"callee": {
|
||||||
|
"end": 152,
|
||||||
|
"name": "close",
|
||||||
|
"start": 147,
|
||||||
|
"type": "Identifier"
|
||||||
|
},
|
||||||
|
"end": 155,
|
||||||
|
"optional": false,
|
||||||
|
"start": 147,
|
||||||
|
"type": "CallExpression",
|
||||||
|
"type": "CallExpression"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"end": 155,
|
||||||
|
"start": 27,
|
||||||
|
"type": "PipeExpression",
|
||||||
|
"type": "PipeExpression"
|
||||||
|
},
|
||||||
|
"end": 155,
|
||||||
|
"start": 20,
|
||||||
|
"type": "ReturnStatement",
|
||||||
|
"type": "ReturnStatement"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"end": 157,
|
||||||
|
"start": 16
|
||||||
|
},
|
||||||
|
"end": 157,
|
||||||
|
"params": [],
|
||||||
|
"start": 10,
|
||||||
|
"type": "FunctionExpression",
|
||||||
|
"type": "FunctionExpression"
|
||||||
|
},
|
||||||
|
"start": 3,
|
||||||
|
"type": "VariableDeclarator"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"end": 157,
|
||||||
|
"kind": "fn",
|
||||||
|
"start": 0,
|
||||||
|
"type": "VariableDeclaration",
|
||||||
|
"type": "VariableDeclaration"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"declarations": [
|
||||||
|
{
|
||||||
|
"end": 369,
|
||||||
|
"id": {
|
||||||
|
"end": 167,
|
||||||
|
"name": "test2",
|
||||||
|
"start": 162,
|
||||||
|
"type": "Identifier"
|
||||||
|
},
|
||||||
|
"init": {
|
||||||
|
"body": {
|
||||||
|
"body": [
|
||||||
|
{
|
||||||
|
"argument": {
|
||||||
|
"end": 367,
|
||||||
|
"properties": [
|
||||||
|
{
|
||||||
|
"end": 365,
|
||||||
|
"key": {
|
||||||
|
"end": 197,
|
||||||
|
"name": "thing1",
|
||||||
|
"start": 191,
|
||||||
|
"type": "Identifier"
|
||||||
|
},
|
||||||
|
"start": 191,
|
||||||
|
"type": "ObjectProperty",
|
||||||
|
"value": {
|
||||||
|
"end": 365,
|
||||||
|
"properties": [
|
||||||
|
{
|
||||||
|
"end": 361,
|
||||||
|
"key": {
|
||||||
|
"end": 211,
|
||||||
|
"name": "thing2",
|
||||||
|
"start": 205,
|
||||||
|
"type": "Identifier"
|
||||||
|
},
|
||||||
|
"start": 205,
|
||||||
|
"type": "ObjectProperty",
|
||||||
|
"value": {
|
||||||
|
"body": [
|
||||||
|
{
|
||||||
|
"arguments": [
|
||||||
|
{
|
||||||
|
"end": 231,
|
||||||
|
"raw": "'XY'",
|
||||||
|
"start": 227,
|
||||||
|
"type": "Literal",
|
||||||
|
"type": "Literal",
|
||||||
|
"value": "XY"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"callee": {
|
||||||
|
"end": 226,
|
||||||
|
"name": "startSketchOn",
|
||||||
|
"start": 213,
|
||||||
|
"type": "Identifier"
|
||||||
|
},
|
||||||
|
"end": 232,
|
||||||
|
"optional": false,
|
||||||
|
"start": 213,
|
||||||
|
"type": "CallExpression",
|
||||||
|
"type": "CallExpression"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"arguments": [
|
||||||
|
{
|
||||||
|
"elements": [
|
||||||
|
{
|
||||||
|
"end": 259,
|
||||||
|
"raw": "0",
|
||||||
|
"start": 258,
|
||||||
|
"type": "Literal",
|
||||||
|
"type": "Literal",
|
||||||
|
"value": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"end": 262,
|
||||||
|
"raw": "0",
|
||||||
|
"start": 261,
|
||||||
|
"type": "Literal",
|
||||||
|
"type": "Literal",
|
||||||
|
"value": 0
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"end": 263,
|
||||||
|
"start": 257,
|
||||||
|
"type": "ArrayExpression",
|
||||||
|
"type": "ArrayExpression"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"end": 266,
|
||||||
|
"start": 265,
|
||||||
|
"type": "PipeSubstitution",
|
||||||
|
"type": "PipeSubstitution"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"callee": {
|
||||||
|
"end": 256,
|
||||||
|
"name": "startProfileAt",
|
||||||
|
"start": 242,
|
||||||
|
"type": "Identifier"
|
||||||
|
},
|
||||||
|
"end": 267,
|
||||||
|
"optional": false,
|
||||||
|
"start": 242,
|
||||||
|
"type": "CallExpression",
|
||||||
|
"type": "CallExpression"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"arguments": [
|
||||||
|
{
|
||||||
|
"elements": [
|
||||||
|
{
|
||||||
|
"end": 284,
|
||||||
|
"raw": "0",
|
||||||
|
"start": 283,
|
||||||
|
"type": "Literal",
|
||||||
|
"type": "Literal",
|
||||||
|
"value": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"end": 287,
|
||||||
|
"raw": "1",
|
||||||
|
"start": 286,
|
||||||
|
"type": "Literal",
|
||||||
|
"type": "Literal",
|
||||||
|
"value": 1
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"end": 288,
|
||||||
|
"start": 282,
|
||||||
|
"type": "ArrayExpression",
|
||||||
|
"type": "ArrayExpression"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"end": 291,
|
||||||
|
"start": 290,
|
||||||
|
"type": "PipeSubstitution",
|
||||||
|
"type": "PipeSubstitution"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"callee": {
|
||||||
|
"end": 281,
|
||||||
|
"name": "line",
|
||||||
|
"start": 277,
|
||||||
|
"type": "Identifier"
|
||||||
|
},
|
||||||
|
"end": 292,
|
||||||
|
"optional": false,
|
||||||
|
"start": 277,
|
||||||
|
"type": "CallExpression",
|
||||||
|
"type": "CallExpression"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"arguments": [
|
||||||
|
{
|
||||||
|
"elements": [
|
||||||
|
{
|
||||||
|
"end": 309,
|
||||||
|
"raw": "1",
|
||||||
|
"start": 308,
|
||||||
|
"type": "Literal",
|
||||||
|
"type": "Literal",
|
||||||
|
"value": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"end": 312,
|
||||||
|
"raw": "0",
|
||||||
|
"start": 311,
|
||||||
|
"type": "Literal",
|
||||||
|
"type": "Literal",
|
||||||
|
"value": 0
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"end": 313,
|
||||||
|
"start": 307,
|
||||||
|
"type": "ArrayExpression",
|
||||||
|
"type": "ArrayExpression"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"end": 316,
|
||||||
|
"start": 315,
|
||||||
|
"type": "PipeSubstitution",
|
||||||
|
"type": "PipeSubstitution"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"callee": {
|
||||||
|
"end": 306,
|
||||||
|
"name": "line",
|
||||||
|
"start": 302,
|
||||||
|
"type": "Identifier"
|
||||||
|
},
|
||||||
|
"end": 317,
|
||||||
|
"optional": false,
|
||||||
|
"start": 302,
|
||||||
|
"type": "CallExpression",
|
||||||
|
"type": "CallExpression"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"arguments": [
|
||||||
|
{
|
||||||
|
"elements": [
|
||||||
|
{
|
||||||
|
"end": 334,
|
||||||
|
"raw": "0",
|
||||||
|
"start": 333,
|
||||||
|
"type": "Literal",
|
||||||
|
"type": "Literal",
|
||||||
|
"value": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"argument": {
|
||||||
|
"end": 338,
|
||||||
|
"raw": "1",
|
||||||
|
"start": 337,
|
||||||
|
"type": "Literal",
|
||||||
|
"type": "Literal",
|
||||||
|
"value": 1
|
||||||
|
},
|
||||||
|
"end": 338,
|
||||||
|
"operator": "-",
|
||||||
|
"start": 336,
|
||||||
|
"type": "UnaryExpression",
|
||||||
|
"type": "UnaryExpression"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"end": 339,
|
||||||
|
"start": 332,
|
||||||
|
"type": "ArrayExpression",
|
||||||
|
"type": "ArrayExpression"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"end": 342,
|
||||||
|
"start": 341,
|
||||||
|
"type": "PipeSubstitution",
|
||||||
|
"type": "PipeSubstitution"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"callee": {
|
||||||
|
"end": 331,
|
||||||
|
"name": "line",
|
||||||
|
"start": 327,
|
||||||
|
"type": "Identifier"
|
||||||
|
},
|
||||||
|
"end": 343,
|
||||||
|
"optional": false,
|
||||||
|
"start": 327,
|
||||||
|
"type": "CallExpression",
|
||||||
|
"type": "CallExpression"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"arguments": [
|
||||||
|
{
|
||||||
|
"end": 360,
|
||||||
|
"start": 359,
|
||||||
|
"type": "PipeSubstitution",
|
||||||
|
"type": "PipeSubstitution"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"callee": {
|
||||||
|
"end": 358,
|
||||||
|
"name": "close",
|
||||||
|
"start": 353,
|
||||||
|
"type": "Identifier"
|
||||||
|
},
|
||||||
|
"end": 361,
|
||||||
|
"optional": false,
|
||||||
|
"start": 353,
|
||||||
|
"type": "CallExpression",
|
||||||
|
"type": "CallExpression"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"end": 361,
|
||||||
|
"start": 213,
|
||||||
|
"type": "PipeExpression",
|
||||||
|
"type": "PipeExpression"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"start": 199,
|
||||||
|
"type": "ObjectExpression",
|
||||||
|
"type": "ObjectExpression"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"start": 187,
|
||||||
|
"type": "ObjectExpression",
|
||||||
|
"type": "ObjectExpression"
|
||||||
|
},
|
||||||
|
"end": 367,
|
||||||
|
"start": 180,
|
||||||
|
"type": "ReturnStatement",
|
||||||
|
"type": "ReturnStatement"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"end": 369,
|
||||||
|
"start": 176
|
||||||
|
},
|
||||||
|
"end": 369,
|
||||||
|
"params": [],
|
||||||
|
"start": 170,
|
||||||
|
"type": "FunctionExpression",
|
||||||
|
"type": "FunctionExpression"
|
||||||
|
},
|
||||||
|
"start": 162,
|
||||||
|
"type": "VariableDeclarator"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"end": 369,
|
||||||
|
"kind": "fn",
|
||||||
|
"start": 159,
|
||||||
|
"type": "VariableDeclaration",
|
||||||
|
"type": "VariableDeclaration"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"declarations": [
|
||||||
|
{
|
||||||
|
"end": 381,
|
||||||
|
"id": {
|
||||||
|
"end": 372,
|
||||||
|
"name": "x",
|
||||||
|
"start": 371,
|
||||||
|
"type": "Identifier"
|
||||||
|
},
|
||||||
|
"init": {
|
||||||
|
"arguments": [],
|
||||||
|
"callee": {
|
||||||
|
"end": 379,
|
||||||
|
"name": "test",
|
||||||
|
"start": 375,
|
||||||
|
"type": "Identifier"
|
||||||
|
},
|
||||||
|
"end": 381,
|
||||||
|
"optional": false,
|
||||||
|
"start": 375,
|
||||||
|
"type": "CallExpression",
|
||||||
|
"type": "CallExpression"
|
||||||
|
},
|
||||||
|
"start": 371,
|
||||||
|
"type": "VariableDeclarator"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"end": 381,
|
||||||
|
"kind": "const",
|
||||||
|
"start": 371,
|
||||||
|
"type": "VariableDeclaration",
|
||||||
|
"type": "VariableDeclaration"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"end": 404,
|
||||||
|
"expression": {
|
||||||
|
"body": [
|
||||||
|
{
|
||||||
|
"end": 383,
|
||||||
|
"name": "x",
|
||||||
|
"start": 382,
|
||||||
|
"type": "Identifier",
|
||||||
|
"type": "Identifier"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"arguments": [
|
||||||
|
{
|
||||||
|
"argument": {
|
||||||
|
"end": 400,
|
||||||
|
"raw": "10",
|
||||||
|
"start": 398,
|
||||||
|
"type": "Literal",
|
||||||
|
"type": "Literal",
|
||||||
|
"value": 10
|
||||||
|
},
|
||||||
|
"end": 400,
|
||||||
|
"operator": "-",
|
||||||
|
"start": 397,
|
||||||
|
"type": "UnaryExpression",
|
||||||
|
"type": "UnaryExpression"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"end": 403,
|
||||||
|
"start": 402,
|
||||||
|
"type": "PipeSubstitution",
|
||||||
|
"type": "PipeSubstitution"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"callee": {
|
||||||
|
"end": 396,
|
||||||
|
"name": "extrude",
|
||||||
|
"start": 389,
|
||||||
|
"type": "Identifier"
|
||||||
|
},
|
||||||
|
"end": 404,
|
||||||
|
"optional": false,
|
||||||
|
"start": 389,
|
||||||
|
"type": "CallExpression",
|
||||||
|
"type": "CallExpression"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"end": 404,
|
||||||
|
"start": 382,
|
||||||
|
"type": "PipeExpression",
|
||||||
|
"type": "PipeExpression"
|
||||||
|
},
|
||||||
|
"start": 382,
|
||||||
|
"type": "ExpressionStatement",
|
||||||
|
"type": "ExpressionStatement"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"declarations": [
|
||||||
|
{
|
||||||
|
"end": 418,
|
||||||
|
"id": {
|
||||||
|
"end": 408,
|
||||||
|
"name": "x2",
|
||||||
|
"start": 406,
|
||||||
|
"type": "Identifier"
|
||||||
|
},
|
||||||
|
"init": {
|
||||||
|
"arguments": [],
|
||||||
|
"callee": {
|
||||||
|
"end": 416,
|
||||||
|
"name": "test2",
|
||||||
|
"start": 411,
|
||||||
|
"type": "Identifier"
|
||||||
|
},
|
||||||
|
"end": 418,
|
||||||
|
"optional": false,
|
||||||
|
"start": 411,
|
||||||
|
"type": "CallExpression",
|
||||||
|
"type": "CallExpression"
|
||||||
|
},
|
||||||
|
"start": 406,
|
||||||
|
"type": "VariableDeclarator"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"end": 418,
|
||||||
|
"kind": "const",
|
||||||
|
"start": 406,
|
||||||
|
"type": "VariableDeclaration",
|
||||||
|
"type": "VariableDeclaration"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"end": 455,
|
||||||
|
"expression": {
|
||||||
|
"body": [
|
||||||
|
{
|
||||||
|
"computed": false,
|
||||||
|
"end": 435,
|
||||||
|
"object": {
|
||||||
|
"computed": false,
|
||||||
|
"end": 428,
|
||||||
|
"object": {
|
||||||
|
"end": 421,
|
||||||
|
"name": "x2",
|
||||||
|
"start": 419,
|
||||||
|
"type": "Identifier",
|
||||||
|
"type": "Identifier"
|
||||||
|
},
|
||||||
|
"property": {
|
||||||
|
"end": 428,
|
||||||
|
"name": "thing1",
|
||||||
|
"start": 422,
|
||||||
|
"type": "Identifier",
|
||||||
|
"type": "Identifier"
|
||||||
|
},
|
||||||
|
"start": 419,
|
||||||
|
"type": "MemberExpression",
|
||||||
|
"type": "MemberExpression"
|
||||||
|
},
|
||||||
|
"property": {
|
||||||
|
"end": 435,
|
||||||
|
"name": "thing2",
|
||||||
|
"start": 429,
|
||||||
|
"type": "Identifier",
|
||||||
|
"type": "Identifier"
|
||||||
|
},
|
||||||
|
"start": 419,
|
||||||
|
"type": "MemberExpression",
|
||||||
|
"type": "MemberExpression"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"arguments": [
|
||||||
|
{
|
||||||
|
"end": 451,
|
||||||
|
"raw": "10",
|
||||||
|
"start": 449,
|
||||||
|
"type": "Literal",
|
||||||
|
"type": "Literal",
|
||||||
|
"value": 10
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"end": 454,
|
||||||
|
"start": 453,
|
||||||
|
"type": "PipeSubstitution",
|
||||||
|
"type": "PipeSubstitution"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"callee": {
|
||||||
|
"end": 448,
|
||||||
|
"name": "extrude",
|
||||||
|
"start": 441,
|
||||||
|
"type": "Identifier"
|
||||||
|
},
|
||||||
|
"end": 455,
|
||||||
|
"optional": false,
|
||||||
|
"start": 441,
|
||||||
|
"type": "CallExpression",
|
||||||
|
"type": "CallExpression"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"end": 455,
|
||||||
|
"start": 419,
|
||||||
|
"type": "PipeExpression",
|
||||||
|
"type": "PipeExpression"
|
||||||
|
},
|
||||||
|
"start": 419,
|
||||||
|
"type": "ExpressionStatement",
|
||||||
|
"type": "ExpressionStatement"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"end": 456,
|
||||||
|
"nonCodeMeta": {
|
||||||
|
"nonCodeNodes": {
|
||||||
|
"0": [
|
||||||
|
{
|
||||||
|
"end": 159,
|
||||||
|
"start": 157,
|
||||||
|
"type": "NonCodeNode",
|
||||||
|
"value": {
|
||||||
|
"type": "newLine"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"1": [
|
||||||
|
{
|
||||||
|
"end": 371,
|
||||||
|
"start": 369,
|
||||||
|
"type": "NonCodeNode",
|
||||||
|
"value": {
|
||||||
|
"type": "newLine"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"3": [
|
||||||
|
{
|
||||||
|
"end": 406,
|
||||||
|
"start": 404,
|
||||||
|
"type": "NonCodeNode",
|
||||||
|
"value": {
|
||||||
|
"type": "newLine"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"startNodes": []
|
||||||
|
},
|
||||||
|
"start": 0
|
||||||
|
}
|
||||||
|
}
|
@ -9,21 +9,21 @@ fn test = () => {
|
|||||||
|
|
||||||
fn test2 = () => {
|
fn test2 = () => {
|
||||||
return {
|
return {
|
||||||
thing1: {
|
thing1: {
|
||||||
thing2: startSketchOn('XY')
|
thing2: startSketchOn('XY')
|
||||||
|> startProfileAt([0, 0], %)
|
|> startProfileAt([0, 0], %)
|
||||||
|> line([0, 1], %)
|
|> line([0, 1], %)
|
||||||
|> line([1, 0], %)
|
|> line([1, 0], %)
|
||||||
|> line([0, -1], %)
|
|> line([0, -1], %)
|
||||||
|> close(%)
|
|> close(%)
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
const x = test()
|
x = test()
|
||||||
x
|
x
|
||||||
|> extrude(-10, %)
|
|> extrude(-10, %)
|
||||||
|
|
||||||
const x2 = test2()
|
x2 = test2()
|
||||||
x2.thing1.thing2
|
x2.thing1.thing2
|
||||||
|> extrude(10, %)
|
|> extrude(10, %)
|
1283
src/wasm-lib/kcl/tests/sketch_in_object/program_memory.snap
Normal file
1283
src/wasm-lib/kcl/tests/sketch_in_object/program_memory.snap
Normal file
File diff suppressed because it is too large
Load Diff
1443
src/wasm-lib/kcl/tests/sketch_in_object/tokens.snap
Normal file
1443
src/wasm-lib/kcl/tests/sketch_in_object/tokens.snap
Normal file
File diff suppressed because it is too large
Load Diff
@ -1,107 +0,0 @@
|
|||||||
fn f = (i) => {
|
|
||||||
return i * 2
|
|
||||||
}
|
|
||||||
|
|
||||||
let x = f(0)
|
|
||||||
+ f(1)
|
|
||||||
+ f(2)
|
|
||||||
+ f(3)
|
|
||||||
+ f(4)
|
|
||||||
+ f(5)
|
|
||||||
+ f(6)
|
|
||||||
+ f(7)
|
|
||||||
+ f(8)
|
|
||||||
+ f(9)
|
|
||||||
+ f(10)
|
|
||||||
+ f(11)
|
|
||||||
+ f(12)
|
|
||||||
+ f(13)
|
|
||||||
+ f(14)
|
|
||||||
+ f(15)
|
|
||||||
+ f(16)
|
|
||||||
+ f(17)
|
|
||||||
+ f(18)
|
|
||||||
+ f(19)
|
|
||||||
+ f(20)
|
|
||||||
+ f(21)
|
|
||||||
+ f(22)
|
|
||||||
+ f(23)
|
|
||||||
+ f(24)
|
|
||||||
+ f(25)
|
|
||||||
+ f(26)
|
|
||||||
+ f(27)
|
|
||||||
+ f(28)
|
|
||||||
+ f(29)
|
|
||||||
+ f(30)
|
|
||||||
+ f(31)
|
|
||||||
+ f(32)
|
|
||||||
+ f(33)
|
|
||||||
+ f(34)
|
|
||||||
+ f(35)
|
|
||||||
+ f(36)
|
|
||||||
+ f(37)
|
|
||||||
+ f(38)
|
|
||||||
+ f(39)
|
|
||||||
+ f(40)
|
|
||||||
+ f(41)
|
|
||||||
+ f(42)
|
|
||||||
+ f(43)
|
|
||||||
+ f(44)
|
|
||||||
+ f(45)
|
|
||||||
+ f(46)
|
|
||||||
+ f(47)
|
|
||||||
+ f(48)
|
|
||||||
+ f(49)
|
|
||||||
+ f(50)
|
|
||||||
+ f(51)
|
|
||||||
+ f(52)
|
|
||||||
+ f(53)
|
|
||||||
+ f(54)
|
|
||||||
+ f(55)
|
|
||||||
+ f(56)
|
|
||||||
+ f(57)
|
|
||||||
+ f(58)
|
|
||||||
+ f(59)
|
|
||||||
+ f(60)
|
|
||||||
+ f(61)
|
|
||||||
+ f(62)
|
|
||||||
+ f(63)
|
|
||||||
+ f(64)
|
|
||||||
+ f(65)
|
|
||||||
+ f(66)
|
|
||||||
+ f(67)
|
|
||||||
+ f(68)
|
|
||||||
+ f(69)
|
|
||||||
+ f(70)
|
|
||||||
+ f(71)
|
|
||||||
+ f(72)
|
|
||||||
+ f(73)
|
|
||||||
+ f(74)
|
|
||||||
+ f(75)
|
|
||||||
+ f(76)
|
|
||||||
+ f(77)
|
|
||||||
+ f(78)
|
|
||||||
+ f(79)
|
|
||||||
+ f(80)
|
|
||||||
+ f(81)
|
|
||||||
+ f(82)
|
|
||||||
+ f(83)
|
|
||||||
+ f(84)
|
|
||||||
+ f(85)
|
|
||||||
+ f(86)
|
|
||||||
+ f(87)
|
|
||||||
+ f(88)
|
|
||||||
+ f(89)
|
|
||||||
+ f(90)
|
|
||||||
+ f(91)
|
|
||||||
+ f(92)
|
|
||||||
+ f(93)
|
|
||||||
+ f(94)
|
|
||||||
+ f(95)
|
|
||||||
+ f(96)
|
|
||||||
+ f(97)
|
|
||||||
+ f(98)
|
|
||||||
+ f(99)
|
|
||||||
+ f(100)
|
|
||||||
|
|
||||||
assertEqual(x, 10100, 0.1, "Big sum")
|
|
@ -5,16 +5,6 @@ use kcl_lib::{
|
|||||||
parser,
|
parser,
|
||||||
};
|
};
|
||||||
|
|
||||||
macro_rules! gen_test {
|
|
||||||
($file:ident) => {
|
|
||||||
#[tokio::test]
|
|
||||||
async fn $file() {
|
|
||||||
let code = include_str!(concat!("inputs/no_visuals/", stringify!($file), ".kcl"));
|
|
||||||
run(&code).await;
|
|
||||||
}
|
|
||||||
};
|
|
||||||
}
|
|
||||||
|
|
||||||
macro_rules! gen_test_fail {
|
macro_rules! gen_test_fail {
|
||||||
($file:ident, $expected:literal) => {
|
($file:ident, $expected:literal) => {
|
||||||
#[tokio::test]
|
#[tokio::test]
|
||||||
@ -37,27 +27,6 @@ macro_rules! gen_test_parse_fail {
|
|||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
async fn run(code: &str) {
|
|
||||||
let (ctx, program, id_generator) = setup(code).await;
|
|
||||||
|
|
||||||
let res = ctx
|
|
||||||
.run(
|
|
||||||
&program,
|
|
||||||
None,
|
|
||||||
id_generator,
|
|
||||||
Some("tests/executor/inputs/no_visuals/".to_owned()),
|
|
||||||
)
|
|
||||||
.await;
|
|
||||||
match res {
|
|
||||||
Ok(state) => {
|
|
||||||
println!("{:#?}", state.memory);
|
|
||||||
}
|
|
||||||
Err(e) => {
|
|
||||||
panic!("{e}");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
async fn setup(program: &str) -> (ExecutorContext, Node<Program>, IdGenerator) {
|
async fn setup(program: &str) -> (ExecutorContext, Node<Program>, IdGenerator) {
|
||||||
let tokens = kcl_lib::token::lexer(program).unwrap();
|
let tokens = kcl_lib::token::lexer(program).unwrap();
|
||||||
let parser = kcl_lib::parser::Parser::new(tokens);
|
let parser = kcl_lib::parser::Parser::new(tokens);
|
||||||
@ -97,11 +66,6 @@ async fn run_parse_fail(code: &str) -> KclError {
|
|||||||
e
|
e
|
||||||
}
|
}
|
||||||
|
|
||||||
gen_test!(property_of_object);
|
|
||||||
gen_test!(index_of_array);
|
|
||||||
gen_test!(comparisons);
|
|
||||||
gen_test!(array_range_expr);
|
|
||||||
gen_test!(array_range_negative_expr);
|
|
||||||
gen_test_fail!(
|
gen_test_fail!(
|
||||||
invalid_index_str,
|
invalid_index_str,
|
||||||
"semantic: Only integers >= 0 can be used as the index of an array, but you're using a string"
|
"semantic: Only integers >= 0 can be used as the index of an array, but you're using a string"
|
||||||
@ -138,14 +102,11 @@ gen_test_fail!(
|
|||||||
pipe_substitution_inside_function_called_from_pipeline,
|
pipe_substitution_inside_function_called_from_pipeline,
|
||||||
"semantic: cannot use % outside a pipe expression"
|
"semantic: cannot use % outside a pipe expression"
|
||||||
);
|
);
|
||||||
gen_test!(sketch_in_object);
|
|
||||||
gen_test!(if_else);
|
|
||||||
// gen_test_fail!(
|
// gen_test_fail!(
|
||||||
// if_else_no_expr,
|
// if_else_no_expr,
|
||||||
// "syntax: blocks inside an if/else expression must end in an expression"
|
// "syntax: blocks inside an if/else expression must end in an expression"
|
||||||
// );
|
// );
|
||||||
gen_test_fail!(comparisons_multiple, "syntax: Invalid number: true");
|
gen_test_fail!(comparisons_multiple, "syntax: Invalid number: true");
|
||||||
gen_test!(import_simple);
|
|
||||||
gen_test_fail!(
|
gen_test_fail!(
|
||||||
import_cycle1,
|
import_cycle1,
|
||||||
"import cycle: circular import of modules is not allowed: tests/executor/inputs/no_visuals/import_cycle2.kcl -> tests/executor/inputs/no_visuals/import_cycle3.kcl -> tests/executor/inputs/no_visuals/import_cycle1.kcl -> tests/executor/inputs/no_visuals/import_cycle2.kcl"
|
"import cycle: circular import of modules is not allowed: tests/executor/inputs/no_visuals/import_cycle2.kcl -> tests/executor/inputs/no_visuals/import_cycle3.kcl -> tests/executor/inputs/no_visuals/import_cycle1.kcl -> tests/executor/inputs/no_visuals/import_cycle2.kcl"
|
||||||
@ -171,8 +132,6 @@ gen_test_parse_fail!(
|
|||||||
// import_in_function,
|
// import_in_function,
|
||||||
// "syntax: Can import only import at the top level"
|
// "syntax: Can import only import at the top level"
|
||||||
// );
|
// );
|
||||||
gen_test!(add_lots);
|
|
||||||
gen_test!(array_elem_push);
|
|
||||||
gen_test_fail!(
|
gen_test_fail!(
|
||||||
array_elem_push_fail,
|
array_elem_push_fail,
|
||||||
"undefined value: The array doesn't have any item at index 3"
|
"undefined value: The array doesn't have any item at index 3"
|
||||||
|
Reference in New Issue
Block a user