Compare commits

...

7 Commits

Author SHA1 Message Date
cb8fc33adb Change CUT_RELEASE_PR to BUILD_RELEASE for out-yml (#4214)
Change CUT_RELEASE_PR to BUILD_RELEASE
2024-10-18 12:46:12 -04:00
2dc8b429ff Cut release v0.26.0 (#4196) 2024-10-18 09:17:13 -07:00
19ffa220e8 Fix reading files from WebAssembly (#4183) 2024-10-18 14:43:01 +00:00
5332ddd88e Add more Machine API capabilities (#4203) 2024-10-18 10:25:54 -04:00
11d9a2ee00 Fix test settings to actually get used (#4191)
* Fix test settings to actually get used

Co-authored-by: Frank Noirot <frank@zoo.dev>

* Export file size changed out from under us again, relax this test to just be above a reasonable size

* Missed on updated export expectation

* Wrong check, should just be greater than

* Fix E2E test, remove console log

* fmt

* A snapshot a day keeps the bugs away! 📷🐛 (OS: ubuntu-latest)

* Sketchy rectangle commit fix

* A snapshot a day keeps the bugs away! 📷🐛 (OS: ubuntu-latest)

* Re-run CI

* A snapshot a day keeps the bugs away! 📷🐛 (OS: windows-latest)

* Revert "A snapshot a day keeps the bugs away! 📷🐛 (OS: windows-latest)"

This reverts commit 2ace7a3b0e.

* A snapshot a day keeps the bugs away! 📷🐛 (OS: ubuntu-latest)

* A snapshot a day keeps the bugs away! 📷🐛 (OS: windows-latest)

* A snapshot a day keeps the bugs away! 📷🐛 (OS: windows-latest)

* Bump timeouts for snapshots

* A snapshot a day keeps the bugs away! 📷🐛 (OS: ubuntu-latest)

* A snapshot a day keeps the bugs away! 📷🐛 (OS: windows-latest)

* A snapshot a day keeps the bugs away! 📷🐛 (OS: windows-latest)

* Re-run CI

---------

Co-authored-by: Frank Noirot <frank@zoo.dev>
Co-authored-by: Frank Noirot <frank@kittycad.io>
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2024-10-18 08:31:00 +00:00
bfebc41a5c Franknoirot/adhoc/revert-dedupe-commits (#4213)
* Revert "KCL: Fix duplicate 'type' key"

This reverts commit f650281855.

* Revert "Remove duplicate "type" field in the snapshots (#4211)"

This reverts commit 824b4c823e.
2024-10-18 02:16:44 -04:00
824b4c823e Remove duplicate "type" field in the snapshots (#4211)
* Remove duplicate "type" field in the snapshots

* A snapshot a day keeps the bugs away! 📷🐛 (OS: ubuntu-latest)

* Confirm

---------

Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
Co-authored-by: Jonathan Tran <jonnytran@gmail.com>
2024-10-18 01:32:03 -04:00
87 changed files with 470 additions and 46 deletions

View File

@ -211,7 +211,7 @@ jobs:
out/*-x86_64-linux.*
- uses: actions/upload-artifact@v3
if: ${{ env.CUT_RELEASE_PR == 'true' }}
if: ${{ env.BUILD_RELEASE == 'true' }}
with:
name: out-yml
path: |

View File

@ -104,7 +104,7 @@ test(
},
{ timeout: 15_000 }
)
.toBe(431341)
.toBeGreaterThan(300_000)
// clean up output.gltf
await fsp.rm('output.gltf')
@ -179,7 +179,7 @@ test(
},
{ timeout: 15_000 }
)
.toBe(102040)
.toBeGreaterThan(100_000)
// clean up output.gltf
await fsp.rm('output.gltf')

View File

@ -1,6 +1,16 @@
import { test, expect } from '@playwright/test'
import fsp from 'fs/promises'
import { uuidv4 } from 'lib/utils'
import { getUtils, setup, tearDown } from './test-utils'
import {
darkModeBgColor,
darkModePlaneColorXZ,
executorInputPath,
getUtils,
setup,
setupElectron,
tearDown,
} from './test-utils'
import { join } from 'path'
test.beforeEach(async ({ context, page }, testInfo) => {
await setup(context, page, testInfo)
@ -974,4 +984,84 @@ test.describe('Editor tests', () => {
|> close(%)
|> extrude(5, %)`)
})
test(
`Can use the import stdlib function on a local OBJ file`,
{ tag: '@electron' },
async ({ browserName }, testInfo) => {
const { electronApp, page } = await setupElectron({
testInfo,
folderSetupFn: async (dir) => {
const bracketDir = join(dir, 'cube')
await fsp.mkdir(bracketDir, { recursive: true })
await fsp.copyFile(
executorInputPath('cube.obj'),
join(bracketDir, 'cube.obj')
)
await fsp.writeFile(join(bracketDir, 'main.kcl'), '')
},
})
const viewportSize = { width: 1200, height: 500 }
await page.setViewportSize(viewportSize)
// Locators and constants
const u = await getUtils(page)
const projectLink = page.getByRole('link', { name: 'cube' })
const gizmo = page.locator('[aria-label*=gizmo]')
const resetCameraButton = page.getByRole('button', { name: 'Reset view' })
const locationToHavColor = async (
position: { x: number; y: number },
color: [number, number, number]
) => {
return u.getGreatestPixDiff(position, color)
}
const notTheOrigin = {
x: viewportSize.width * 0.55,
y: viewportSize.height * 0.3,
}
const origin = { x: viewportSize.width / 2, y: viewportSize.height / 2 }
const errorIndicators = page.locator('.cm-lint-marker-error')
await test.step(`Open the empty file, see the default planes`, async () => {
await projectLink.click()
await u.waitForPageLoad()
await expect
.poll(
async () => locationToHavColor(notTheOrigin, darkModePlaneColorXZ),
{
timeout: 5000,
message: 'XZ plane color is visible',
}
)
.toBeLessThan(15)
})
await test.step(`Write the import function line`, async () => {
await u.codeLocator.fill(`import('cube.obj')`)
await page.waitForTimeout(800)
})
await test.step(`Reset the camera before checking`, async () => {
await u.doAndWaitForCmd(async () => {
await gizmo.click({ button: 'right' })
await resetCameraButton.click()
}, 'zoom_to_fit')
})
await test.step(`Verify that we see the imported geometry and no errors`, async () => {
await expect(errorIndicators).toHaveCount(0)
await expect
.poll(async () => locationToHavColor(origin, darkModePlaneColorXZ), {
timeout: 3000,
message: 'Plane color should not be visible',
})
.toBeGreaterThan(15)
await expect
.poll(async () => locationToHavColor(origin, darkModeBgColor), {
timeout: 3000,
message: 'Background color should not be visible',
})
.toBeGreaterThan(15)
})
await electronApp.close()
}
)
})

View File

@ -255,7 +255,7 @@ test.describe('Can export from electron app', () => {
},
{ timeout: 15_000 }
)
.toBe(431341)
.toBeGreaterThan(300_000)
// clean up output.gltf
await fsp.rm('output.gltf')
@ -851,7 +851,7 @@ test(
}
)
test(
test.fixme(
'When the project folder is empty, user can create new project and open it.',
{ tag: '@electron' },
async ({ browserName }, testInfo) => {
@ -861,6 +861,12 @@ test(
page.on('console', console.log)
// Locators and constants
const gizmo = page.locator('[aria-label*=gizmo]')
const resetCameraButton = page.getByRole('button', { name: 'Reset view' })
const pointOnModel = { x: 660, y: 250 }
const expectedStartCamZPosition = 15633.47
// expect to see text "No Projects found"
await expect(page.getByText('No Projects found')).toBeVisible()
@ -873,16 +879,7 @@ test(
await page.getByText('project-000').click()
await expect(page.getByTestId('loading')).toBeAttached()
await expect(page.getByTestId('loading')).not.toBeAttached({
timeout: 20_000,
})
await expect(
page.getByRole('button', { name: 'Start Sketch' })
).toBeEnabled({
timeout: 20_000,
})
await u.waitForPageLoad()
await page.locator('.cm-content').fill(`sketch001 = startSketchOn('XZ')
|> startProfileAt([-87.4, 282.92], %)
@ -892,8 +889,28 @@ test(
|> lineTo([profileStartX(%), profileStartY(%)], %)
|> close(%)
extrude001 = extrude(200, sketch001)`)
await page.waitForTimeout(800)
const pointOnModel = { x: 660, y: 250 }
async function getCameraZValue() {
return page
.getByTestId('cam-z-position')
.inputValue()
.then((value) => parseFloat(value))
}
await test.step(`Reset camera`, async () => {
await u.openDebugPanel()
await u.clearCommandLogs()
await u.doAndWaitForCmd(async () => {
await gizmo.click({ button: 'right' })
await resetCameraButton.click()
}, 'zoom_to_fit')
await expect
.poll(getCameraZValue, {
message: 'Camera Z should be at expected position after reset',
})
.toEqual(expectedStartCamZPosition)
})
// gray at this pixel means the stream has loaded in the most
// user way we can verify it (pixel color)
@ -901,7 +918,7 @@ extrude001 = extrude(200, sketch001)`)
.poll(() => u.getGreatestPixDiff(pointOnModel, [143, 143, 143]), {
timeout: 10_000,
})
.toBeLessThan(15)
.toBeLessThan(30)
await expect(async () => {
await page.mouse.move(0, 0, { steps: 5 })

View File

@ -471,7 +471,7 @@ test(
await page.mouse.move(startXPx + PUR * 30, 500 - PUR * 20, { steps: 10 })
await page.waitForTimeout(300)
await page.waitForTimeout(1000)
await expect(page).toHaveScreenshot({
maxDiffPixels: 100,
@ -528,6 +528,7 @@ test(
// Draw the rectangle
await page.mouse.click(startXPx + PUR * 20, 500 - PUR * 30)
await page.mouse.move(startXPx + PUR * 10, 500 - PUR * 10, { steps: 5 })
await page.waitForTimeout(800)
// Ensure the draft rectangle looks the same as it usually does
await expect(page).toHaveScreenshot({
@ -895,7 +896,7 @@ test(
// Wait for the second extrusion to appear
// TODO: Find a way to truly know that the objects have finished
// rendering, because an execution-done message is not sufficient.
await page.waitForTimeout(1000)
await page.waitForTimeout(2000)
await expect(page).toHaveScreenshot({
maxDiffPixels: 100,
@ -939,7 +940,7 @@ test(
// Wait for the second extrusion to appear
// TODO: Find a way to truly know that the objects have finished
// rendering, because an execution-done message is not sufficient.
await page.waitForTimeout(1000)
await page.waitForTimeout(2000)
await expect(page).toHaveScreenshot({
maxDiffPixels: 100,

Binary file not shown.

Before

Width:  |  Height:  |  Size: 43 KiB

After

Width:  |  Height:  |  Size: 43 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 49 KiB

After

Width:  |  Height:  |  Size: 49 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 46 KiB

After

Width:  |  Height:  |  Size: 46 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 62 KiB

After

Width:  |  Height:  |  Size: 62 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 37 KiB

After

Width:  |  Height:  |  Size: 37 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 39 KiB

After

Width:  |  Height:  |  Size: 39 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 42 KiB

After

Width:  |  Height:  |  Size: 42 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 36 KiB

After

Width:  |  Height:  |  Size: 36 KiB

View File

@ -47,6 +47,14 @@ export const commonPoints = {
num2: 14.44,
}
/** A semi-reliable color to check the default XZ plane on
* in dark mode in the default camera position
*/
export const darkModePlaneColorXZ: [number, number, number] = [50, 50, 99]
/** A semi-reliable color to check the default dark mode bg color against */
export const darkModeBgColor: [number, number, number] = [27, 27, 27]
export const editorSelector = '[role="textbox"][data-language="kcl"]'
type PaneId = 'variables' | 'code' | 'files' | 'logs'
@ -882,8 +890,8 @@ export async function setupElectron({
appSettings
? { settings: appSettings }
: {
...TEST_SETTINGS,
settings: {
...TEST_SETTINGS,
app: {
...TEST_SETTINGS.app,
projectDirectory: projectDirName,

2
interface.d.ts vendored
View File

@ -23,8 +23,8 @@ export interface IElectronAPI {
key: string,
callback: (eventType: string, path: string) => void
) => void
readFile: typeof fs.readFile
watchFileOff: (path: string, key: string) => void
readFile: (path: string) => ReturnType<fs.readFile>
writeFile: (
path: string,
data: string | Uint8Array

View File

@ -1,6 +1,6 @@
{
"name": "zoo-modeling-app",
"version": "0.25.6",
"version": "0.26.0",
"private": true,
"productName": "Zoo Modeling App",
"author": {

View File

@ -135,7 +135,9 @@ function CommandArgOptionInput({
<Combobox.Input
id="option-input"
ref={inputRef}
onChange={(event) => setQuery(event.target.value)}
onChange={(event) =>
!event.target.disabled && setQuery(event.target.value)
}
className="flex-grow px-2 py-1 border-b border-b-chalkboard-100 dark:border-b-chalkboard-80 !bg-transparent focus:outline-none"
onKeyDown={(event) => {
if (event.metaKey && event.key === 'k')
@ -175,9 +177,18 @@ function CommandArgOptionInput({
<Combobox.Option
key={option.name}
value={option}
disabled={option.disabled}
className="flex items-center gap-2 px-4 py-1 first:mt-2 last:mb-2 ui-active:bg-primary/10 dark:ui-active:bg-chalkboard-90"
>
<p className="flex-grow">{option.name} </p>
<p
className={`flex-grow ${
(option.disabled &&
'text-chalkboard-70 dark:text-chalkboard-50 cursor-not-allowed') ||
''
}`}
>
{option.name}
</p>
{option.value === currentOption?.value && (
<small className="text-chalkboard-70 dark:text-chalkboard-50">
current

View File

@ -140,7 +140,7 @@ const FileTreeItem = ({
async (eventType, path) => {
// Don't try to read a file that was removed.
if (isCurrentFile && eventType !== 'unlink') {
let code = await window.electron.readFile(path)
let code = await window.electron.readFile(path, { encoding: 'utf-8' })
code = normalizeLineEndings(code)
codeManager.updateCodeStateEditor(code)
}

View File

@ -12,7 +12,6 @@ export const NetworkMachineIndicator = ({
const machineCount = machineManager.machineCount()
const reason = machineManager.noMachinesReason()
const machines = machineManager.machines
console.log('react machines', machines)
return isDesktop() ? (
<Popover className="relative">
@ -55,12 +54,6 @@ export const NetworkMachineIndicator = ({
<p className="text-chalkboard-60 dark:text-chalkboard-50 text-xs">
{machine.make_model.model}
</p>
<p className="text-chalkboard-60 dark:text-chalkboard-50 text-xs">
{machine.state.state.toUpperCase()}
{machine.state.state === 'failed' && machine.state.message
? ': ' + machine.state.message
: ''}
</p>
{machine.extra &&
machine.extra.type === 'bambu' &&
machine.extra.nozzle_diameter && (
@ -68,6 +61,17 @@ export const NetworkMachineIndicator = ({
Nozzle Diameter: {machine.extra.nozzle_diameter}
</p>
)}
<p className="text-chalkboard-60 dark:text-chalkboard-50 text-xs">
{`Status: ${machine.state.state
.charAt(0)
.toUpperCase()}${machine.state.state.slice(1)}`}
{machine.state.state === 'failed' && machine.state.message
? ` (${machine.state.message})`
: ''}
{machine.state.state === 'running' && machine.progress
? ` (${Math.round(machine.progress)}%)`
: ''}
</p>
</li>
)
})}

View File

@ -41,7 +41,7 @@ beforeAll(async () => {
},
})
})
}, 20_000)
}, 30_000)
afterAll(() => {
engineCommandManager.tearDown()

View File

@ -18,7 +18,7 @@ class FileSystemManager {
return Promise.resolve(window.electron.path.join(dir, path))
}
async readFile(path: string): Promise<Uint8Array | void> {
async readFile(path: string): Promise<Uint8Array> {
// Using local file system only works from desktop.
if (!isDesktop()) {
return Promise.reject(

View File

@ -194,10 +194,24 @@ export const modelingMachineCommandConfig: StateMachineCommandSetConfig<
`${machine.id} (${
machine.make_model.model || machine.make_model.manufacturer
}) (${machine.state.state})` +
(machine.extra &&
machine.extra.type === 'bambu' &&
machine.extra.nozzle_diameter
? ` - Nozzle Diameter: ${machine.extra.nozzle_diameter}`
(machine.hardware_configuration &&
machine.hardware_configuration.type !== 'none' &&
machine.hardware_configuration.config.nozzle_diameter
? ` - Nozzle Diameter: ${machine.hardware_configuration.config.nozzle_diameter}`
: '') +
(machine.hardware_configuration &&
machine.hardware_configuration.type !== 'none' &&
machine.hardware_configuration.config.filaments &&
machine.hardware_configuration.config.filaments[0]
? ` - ${
machine.hardware_configuration.config.filaments[0].name
} #${
machine.hardware_configuration.config &&
machine.hardware_configuration.config.filaments[0].color?.slice(
0,
6
)
}`
: ''),
isCurrent: false,
disabled: machine.state.state !== 'idle',

View File

@ -258,5 +258,6 @@ export type CommandArgumentWithName<
export type CommandArgumentOption<A> = {
name: string
isCurrent?: boolean
disabled?: boolean
value: A
}

View File

@ -448,7 +448,9 @@ export const readProjectSettingsFile = async (
}
}
const configToml = await window.electron.readFile(settingsPath)
const configToml = await window.electron.readFile(settingsPath, {
encoding: 'utf-8',
})
const configObj = parseProjectSettings(configToml)
if (err(configObj)) {
return Promise.reject(configObj)
@ -467,7 +469,9 @@ export const readAppSettingsFile = async () => {
// The file exists, read it and parse it.
if (window.electron.exists(settingsPath)) {
const configToml = await window.electron.readFile(settingsPath)
const configToml = await window.electron.readFile(settingsPath, {
encoding: 'utf-8',
})
const parsedAppConfig = parseAppSettings(configToml)
if (err(parsedAppConfig)) {
return Promise.reject(parsedAppConfig)
@ -527,7 +531,9 @@ export const readTokenFile = async () => {
let settingsPath = await getTokenFilePath()
if (window.electron.exists(settingsPath)) {
const token: string = await window.electron.readFile(settingsPath)
const token: string = await window.electron.readFile(settingsPath, {
encoding: 'utf-8',
})
if (!token) return ''
return token

View File

@ -109,7 +109,9 @@ export const fileLoader: LoaderFunction = async (
)
}
code = await window.electron.readFile(currentFilePath)
code = await window.electron.readFile(currentFilePath, {
encoding: 'utf-8',
})
code = normalizeLineEndings(code)
// Update both the state and the editor's code.

View File

@ -74,7 +74,7 @@ const watchFileOff = (path: string, key: string) => {
fsWatchListeners.set(path, watchers)
}
}
const readFile = (path: string) => fs.readFile(path, 'utf-8')
const readFile = fs.readFile
// It seems like from the node source code this does not actually block but also
// don't trust me on that (jess).
const exists = (path: string) => fsSync.existsSync(path)

View File

@ -494,7 +494,7 @@ impl From<&BodyItem> for SourceRange {
#[derive(Debug, Clone, Deserialize, Serialize, PartialEq, ts_rs::TS, JsonSchema, Bake)]
#[databake(path = kcl_lib::ast::types)]
#[ts(export)]
#[serde(untagged)]
#[serde(tag = "type")]
pub enum Expr {
Literal(Box<Literal>),
Identifier(Box<Identifier>),

View File

@ -23,11 +23,13 @@ expression: actual
"name": "boxSketch"
},
"init": {
"type": "PipeExpression",
"type": "PipeExpression",
"start": 18,
"end": 143,
"body": [
{
"type": "CallExpression",
"type": "CallExpression",
"start": 18,
"end": 39,
@ -39,11 +41,13 @@ expression: actual
},
"arguments": [
{
"type": "ArrayExpression",
"type": "ArrayExpression",
"start": 32,
"end": 38,
"elements": [
{
"type": "Literal",
"type": "Literal",
"start": 33,
"end": 34,
@ -51,6 +55,7 @@ expression: actual
"raw": "0"
},
{
"type": "Literal",
"type": "Literal",
"start": 36,
"end": 37,
@ -63,6 +68,7 @@ expression: actual
"optional": false
},
{
"type": "CallExpression",
"type": "CallExpression",
"start": 47,
"end": 63,
@ -74,11 +80,13 @@ expression: actual
},
"arguments": [
{
"type": "ArrayExpression",
"type": "ArrayExpression",
"start": 52,
"end": 59,
"elements": [
{
"type": "Literal",
"type": "Literal",
"start": 53,
"end": 54,
@ -86,6 +94,7 @@ expression: actual
"raw": "0"
},
{
"type": "Literal",
"type": "Literal",
"start": 56,
"end": 58,
@ -95,6 +104,7 @@ expression: actual
]
},
{
"type": "PipeSubstitution",
"type": "PipeSubstitution",
"start": 61,
"end": 62
@ -103,6 +113,7 @@ expression: actual
"optional": false
},
{
"type": "CallExpression",
"type": "CallExpression",
"start": 71,
"end": 96,
@ -114,11 +125,13 @@ expression: actual
},
"arguments": [
{
"type": "ArrayExpression",
"type": "ArrayExpression",
"start": 85,
"end": 92,
"elements": [
{
"type": "UnaryExpression",
"type": "UnaryExpression",
"start": 86,
"end": 88,
@ -133,6 +146,7 @@ expression: actual
}
},
{
"type": "Literal",
"type": "Literal",
"start": 90,
"end": 91,
@ -142,6 +156,7 @@ expression: actual
]
},
{
"type": "PipeSubstitution",
"type": "PipeSubstitution",
"start": 94,
"end": 95
@ -150,6 +165,7 @@ expression: actual
"optional": false
},
{
"type": "CallExpression",
"type": "CallExpression",
"start": 104,
"end": 121,
@ -161,11 +177,13 @@ expression: actual
},
"arguments": [
{
"type": "ArrayExpression",
"type": "ArrayExpression",
"start": 109,
"end": 117,
"elements": [
{
"type": "Literal",
"type": "Literal",
"start": 110,
"end": 111,
@ -173,6 +191,7 @@ expression: actual
"raw": "5"
},
{
"type": "UnaryExpression",
"type": "UnaryExpression",
"start": 113,
"end": 116,
@ -189,6 +208,7 @@ expression: actual
]
},
{
"type": "PipeSubstitution",
"type": "PipeSubstitution",
"start": 119,
"end": 120
@ -197,6 +217,7 @@ expression: actual
"optional": false
},
{
"type": "CallExpression",
"type": "CallExpression",
"start": 129,
"end": 143,
@ -208,6 +229,7 @@ expression: actual
},
"arguments": [
{
"type": "Literal",
"type": "Literal",
"start": 137,
"end": 139,
@ -215,6 +237,7 @@ expression: actual
"raw": "10"
},
{
"type": "PipeSubstitution",
"type": "PipeSubstitution",
"start": 141,
"end": 142

View File

@ -23,6 +23,7 @@ expression: actual
"name": "sg"
},
"init": {
"type": "UnaryExpression",
"type": "UnaryExpression",
"start": 11,
"end": 17,

View File

@ -12,6 +12,7 @@ expression: actual
"start": 0,
"end": 23,
"expression": {
"type": "CallExpression",
"type": "CallExpression",
"start": 0,
"end": 23,
@ -23,6 +24,7 @@ expression: actual
},
"arguments": [
{
"type": "ObjectExpression",
"type": "ObjectExpression",
"start": 7,
"end": 22,
@ -38,11 +40,13 @@ expression: actual
"name": "to"
},
"value": {
"type": "ArrayExpression",
"type": "ArrayExpression",
"start": 13,
"end": 20,
"elements": [
{
"type": "Literal",
"type": "Literal",
"start": 14,
"end": 15,
@ -50,6 +54,7 @@ expression: actual
"raw": "0"
},
{
"type": "UnaryExpression",
"type": "UnaryExpression",
"start": 17,
"end": 19,

View File

@ -23,10 +23,12 @@ expression: actual
"name": "myArray"
},
"init": {
"type": "ArrayRangeExpression",
"type": "ArrayRangeExpression",
"start": 16,
"end": 23,
"startElement": {
"type": "Literal",
"type": "Literal",
"start": 17,
"end": 18,
@ -34,6 +36,7 @@ expression: actual
"raw": "0"
},
"endElement": {
"type": "Literal",
"type": "Literal",
"start": 20,
"end": 22,

View File

@ -23,6 +23,7 @@ expression: actual
"name": "firstPrimeNumber"
},
"init": {
"type": "FunctionExpression",
"type": "FunctionExpression",
"start": 27,
"end": 57,
@ -37,6 +38,7 @@ expression: actual
"start": 43,
"end": 51,
"argument": {
"type": "Literal",
"type": "Literal",
"start": 50,
"end": 51,
@ -57,6 +59,7 @@ expression: actual
"start": 62,
"end": 80,
"expression": {
"type": "CallExpression",
"type": "CallExpression",
"start": 62,
"end": 80,

View File

@ -23,6 +23,7 @@ expression: actual
"name": "thing"
},
"init": {
"type": "FunctionExpression",
"type": "FunctionExpression",
"start": 11,
"end": 49,
@ -48,6 +49,7 @@ expression: actual
"start": 32,
"end": 43,
"argument": {
"type": "Literal",
"type": "Literal",
"start": 39,
"end": 43,
@ -68,6 +70,7 @@ expression: actual
"start": 54,
"end": 66,
"expression": {
"type": "CallExpression",
"type": "CallExpression",
"start": 54,
"end": 66,
@ -79,6 +82,7 @@ expression: actual
},
"arguments": [
{
"type": "Literal",
"type": "Literal",
"start": 60,
"end": 65,

View File

@ -23,11 +23,13 @@ expression: actual
"name": "mySketch"
},
"init": {
"type": "PipeExpression",
"type": "PipeExpression",
"start": 17,
"end": 165,
"body": [
{
"type": "CallExpression",
"type": "CallExpression",
"start": 17,
"end": 37,
@ -39,11 +41,13 @@ expression: actual
},
"arguments": [
{
"type": "ArrayExpression",
"type": "ArrayExpression",
"start": 31,
"end": 36,
"elements": [
{
"type": "Literal",
"type": "Literal",
"start": 32,
"end": 33,
@ -51,6 +55,7 @@ expression: actual
"raw": "0"
},
{
"type": "Literal",
"type": "Literal",
"start": 34,
"end": 35,
@ -63,6 +68,7 @@ expression: actual
"optional": false
},
{
"type": "CallExpression",
"type": "CallExpression",
"start": 49,
"end": 75,
@ -74,11 +80,13 @@ expression: actual
},
"arguments": [
{
"type": "ArrayExpression",
"type": "ArrayExpression",
"start": 56,
"end": 62,
"elements": [
{
"type": "Literal",
"type": "Literal",
"start": 57,
"end": 58,
@ -86,6 +94,7 @@ expression: actual
"raw": "0"
},
{
"type": "Literal",
"type": "Literal",
"start": 60,
"end": 61,
@ -95,11 +104,13 @@ expression: actual
]
},
{
"type": "PipeSubstitution",
"type": "PipeSubstitution",
"start": 64,
"end": 65
},
{
"type": "TagDeclarator",
"type": "TagDeclarator",
"start": 67,
"end": 74,
@ -109,6 +120,7 @@ expression: actual
"optional": false
},
{
"type": "CallExpression",
"type": "CallExpression",
"start": 87,
"end": 104,
@ -120,11 +132,13 @@ expression: actual
},
"arguments": [
{
"type": "ArrayExpression",
"type": "ArrayExpression",
"start": 94,
"end": 100,
"elements": [
{
"type": "Literal",
"type": "Literal",
"start": 95,
"end": 96,
@ -132,6 +146,7 @@ expression: actual
"raw": "1"
},
{
"type": "Literal",
"type": "Literal",
"start": 98,
"end": 99,
@ -141,6 +156,7 @@ expression: actual
]
},
{
"type": "PipeSubstitution",
"type": "PipeSubstitution",
"start": 102,
"end": 103
@ -149,6 +165,7 @@ expression: actual
"optional": false
},
{
"type": "CallExpression",
"type": "CallExpression",
"start": 116,
"end": 145,
@ -160,11 +177,13 @@ expression: actual
},
"arguments": [
{
"type": "ArrayExpression",
"type": "ArrayExpression",
"start": 123,
"end": 129,
"elements": [
{
"type": "Literal",
"type": "Literal",
"start": 124,
"end": 125,
@ -172,6 +191,7 @@ expression: actual
"raw": "1"
},
{
"type": "Literal",
"type": "Literal",
"start": 127,
"end": 128,
@ -181,11 +201,13 @@ expression: actual
]
},
{
"type": "PipeSubstitution",
"type": "PipeSubstitution",
"start": 131,
"end": 132
},
{
"type": "TagDeclarator",
"type": "TagDeclarator",
"start": 134,
"end": 144,
@ -195,6 +217,7 @@ expression: actual
"optional": false
},
{
"type": "CallExpression",
"type": "CallExpression",
"start": 157,
"end": 165,
@ -206,6 +229,7 @@ expression: actual
},
"arguments": [
{
"type": "PipeSubstitution",
"type": "PipeSubstitution",
"start": 163,
"end": 164

View File

@ -23,11 +23,13 @@ expression: actual
"name": "mySketch"
},
"init": {
"type": "PipeExpression",
"type": "PipeExpression",
"start": 17,
"end": 70,
"body": [
{
"type": "CallExpression",
"type": "CallExpression",
"start": 17,
"end": 37,
@ -39,11 +41,13 @@ expression: actual
},
"arguments": [
{
"type": "ArrayExpression",
"type": "ArrayExpression",
"start": 31,
"end": 36,
"elements": [
{
"type": "Literal",
"type": "Literal",
"start": 32,
"end": 33,
@ -51,6 +55,7 @@ expression: actual
"raw": "0"
},
{
"type": "Literal",
"type": "Literal",
"start": 34,
"end": 35,
@ -63,6 +68,7 @@ expression: actual
"optional": false
},
{
"type": "CallExpression",
"type": "CallExpression",
"start": 41,
"end": 58,
@ -74,11 +80,13 @@ expression: actual
},
"arguments": [
{
"type": "ArrayExpression",
"type": "ArrayExpression",
"start": 48,
"end": 54,
"elements": [
{
"type": "Literal",
"type": "Literal",
"start": 49,
"end": 50,
@ -86,6 +94,7 @@ expression: actual
"raw": "1"
},
{
"type": "Literal",
"type": "Literal",
"start": 52,
"end": 53,
@ -95,6 +104,7 @@ expression: actual
]
},
{
"type": "PipeSubstitution",
"type": "PipeSubstitution",
"start": 56,
"end": 57
@ -103,6 +113,7 @@ expression: actual
"optional": false
},
{
"type": "CallExpression",
"type": "CallExpression",
"start": 62,
"end": 70,
@ -114,6 +125,7 @@ expression: actual
},
"arguments": [
{
"type": "PipeSubstitution",
"type": "PipeSubstitution",
"start": 68,
"end": 69

View File

@ -23,6 +23,7 @@ expression: actual
"name": "myBox"
},
"init": {
"type": "CallExpression",
"type": "CallExpression",
"start": 14,
"end": 30,
@ -34,6 +35,7 @@ expression: actual
},
"arguments": [
{
"type": "Identifier",
"type": "Identifier",
"start": 28,
"end": 29,

View File

@ -23,11 +23,13 @@ expression: actual
"name": "myBox"
},
"init": {
"type": "PipeExpression",
"type": "PipeExpression",
"start": 14,
"end": 29,
"body": [
{
"type": "CallExpression",
"type": "CallExpression",
"start": 14,
"end": 18,
@ -39,6 +41,7 @@ expression: actual
},
"arguments": [
{
"type": "Literal",
"type": "Literal",
"start": 16,
"end": 17,
@ -49,6 +52,7 @@ expression: actual
"optional": false
},
{
"type": "CallExpression",
"type": "CallExpression",
"start": 22,
"end": 29,
@ -60,6 +64,7 @@ expression: actual
},
"arguments": [
{
"type": "Literal",
"type": "Literal",
"start": 24,
"end": 25,
@ -67,6 +72,7 @@ expression: actual
"raw": "2"
},
{
"type": "PipeSubstitution",
"type": "PipeSubstitution",
"start": 27,
"end": 28

View File

@ -23,11 +23,13 @@ expression: actual
"name": "myBox"
},
"init": {
"type": "PipeExpression",
"type": "PipeExpression",
"start": 14,
"end": 49,
"body": [
{
"type": "CallExpression",
"type": "CallExpression",
"start": 14,
"end": 30,
@ -39,6 +41,7 @@ expression: actual
},
"arguments": [
{
"type": "Identifier",
"type": "Identifier",
"start": 28,
"end": 29,
@ -48,6 +51,7 @@ expression: actual
"optional": false
},
{
"type": "CallExpression",
"type": "CallExpression",
"start": 34,
"end": 49,
@ -59,11 +63,13 @@ expression: actual
},
"arguments": [
{
"type": "ArrayExpression",
"type": "ArrayExpression",
"start": 39,
"end": 45,
"elements": [
{
"type": "Literal",
"type": "Literal",
"start": 40,
"end": 41,
@ -71,6 +77,7 @@ expression: actual
"raw": "0"
},
{
"type": "Identifier",
"type": "Identifier",
"start": 43,
"end": 44,
@ -79,6 +86,7 @@ expression: actual
]
},
{
"type": "PipeSubstitution",
"type": "PipeSubstitution",
"start": 47,
"end": 48

View File

@ -12,6 +12,7 @@ expression: actual
"start": 0,
"end": 22,
"expression": {
"type": "CallExpression",
"type": "CallExpression",
"start": 0,
"end": 22,
@ -23,6 +24,7 @@ expression: actual
},
"arguments": [
{
"type": "ObjectExpression",
"type": "ObjectExpression",
"start": 7,
"end": 21,
@ -38,11 +40,13 @@ expression: actual
"name": "to"
},
"value": {
"type": "ArrayExpression",
"type": "ArrayExpression",
"start": 13,
"end": 19,
"elements": [
{
"type": "Literal",
"type": "Literal",
"start": 14,
"end": 15,
@ -50,6 +54,7 @@ expression: actual
"raw": "0"
},
{
"type": "Literal",
"type": "Literal",
"start": 17,
"end": 18,

View File

@ -12,6 +12,7 @@ expression: actual
"start": 0,
"end": 36,
"expression": {
"type": "CallExpression",
"type": "CallExpression",
"start": 0,
"end": 36,
@ -23,6 +24,7 @@ expression: actual
},
"arguments": [
{
"type": "ObjectExpression",
"type": "ObjectExpression",
"start": 7,
"end": 35,
@ -38,11 +40,13 @@ expression: actual
"name": "to"
},
"value": {
"type": "ArrayExpression",
"type": "ArrayExpression",
"start": 13,
"end": 19,
"elements": [
{
"type": "Literal",
"type": "Literal",
"start": 14,
"end": 15,
@ -50,6 +54,7 @@ expression: actual
"raw": "0"
},
{
"type": "Literal",
"type": "Literal",
"start": 17,
"end": 18,
@ -70,11 +75,13 @@ expression: actual
"name": "from"
},
"value": {
"type": "ArrayExpression",
"type": "ArrayExpression",
"start": 27,
"end": 33,
"elements": [
{
"type": "Literal",
"type": "Literal",
"start": 28,
"end": 29,
@ -82,6 +89,7 @@ expression: actual
"raw": "3"
},
{
"type": "Literal",
"type": "Literal",
"start": 31,
"end": 32,

View File

@ -12,6 +12,7 @@ expression: actual
"start": 0,
"end": 19,
"expression": {
"type": "CallExpression",
"type": "CallExpression",
"start": 0,
"end": 19,
@ -23,6 +24,7 @@ expression: actual
},
"arguments": [
{
"type": "ObjectExpression",
"type": "ObjectExpression",
"start": 7,
"end": 18,
@ -38,11 +40,13 @@ expression: actual
"name": "to"
},
"value": {
"type": "ArrayExpression",
"type": "ArrayExpression",
"start": 11,
"end": 17,
"elements": [
{
"type": "Literal",
"type": "Literal",
"start": 12,
"end": 13,
@ -50,6 +54,7 @@ expression: actual
"raw": "0"
},
{
"type": "Literal",
"type": "Literal",
"start": 15,
"end": 16,

View File

@ -12,6 +12,7 @@ expression: actual
"start": 0,
"end": 35,
"expression": {
"type": "CallExpression",
"type": "CallExpression",
"start": 0,
"end": 35,
@ -23,6 +24,7 @@ expression: actual
},
"arguments": [
{
"type": "ObjectExpression",
"type": "ObjectExpression",
"start": 7,
"end": 34,
@ -38,11 +40,13 @@ expression: actual
"name": "to"
},
"value": {
"type": "ArrayExpression",
"type": "ArrayExpression",
"start": 13,
"end": 19,
"elements": [
{
"type": "Literal",
"type": "Literal",
"start": 14,
"end": 15,
@ -50,6 +54,7 @@ expression: actual
"raw": "0"
},
{
"type": "Literal",
"type": "Literal",
"start": 17,
"end": 18,
@ -70,11 +75,13 @@ expression: actual
"name": "from"
},
"value": {
"type": "ArrayExpression",
"type": "ArrayExpression",
"start": 27,
"end": 33,
"elements": [
{
"type": "Literal",
"type": "Literal",
"start": 28,
"end": 29,
@ -82,6 +89,7 @@ expression: actual
"raw": "3"
},
{
"type": "Literal",
"type": "Literal",
"start": 31,
"end": 32,

View File

@ -12,6 +12,7 @@ expression: actual
"start": 0,
"end": 35,
"expression": {
"type": "CallExpression",
"type": "CallExpression",
"start": 0,
"end": 35,
@ -23,6 +24,7 @@ expression: actual
},
"arguments": [
{
"type": "ObjectExpression",
"type": "ObjectExpression",
"start": 7,
"end": 34,
@ -38,11 +40,13 @@ expression: actual
"name": "to"
},
"value": {
"type": "ArrayExpression",
"type": "ArrayExpression",
"start": 13,
"end": 19,
"elements": [
{
"type": "Literal",
"type": "Literal",
"start": 14,
"end": 15,
@ -50,6 +54,7 @@ expression: actual
"raw": "0"
},
{
"type": "Literal",
"type": "Literal",
"start": 17,
"end": 18,
@ -70,11 +75,13 @@ expression: actual
"name": "from"
},
"value": {
"type": "ArrayExpression",
"type": "ArrayExpression",
"start": 26,
"end": 32,
"elements": [
{
"type": "Literal",
"type": "Literal",
"start": 27,
"end": 28,
@ -82,6 +89,7 @@ expression: actual
"raw": "3"
},
{
"type": "Literal",
"type": "Literal",
"start": 30,
"end": 31,

View File

@ -23,6 +23,7 @@ expression: actual
"name": "mySketch"
},
"init": {
"type": "CallExpression",
"type": "CallExpression",
"start": 17,
"end": 37,
@ -34,11 +35,13 @@ expression: actual
},
"arguments": [
{
"type": "ArrayExpression",
"type": "ArrayExpression",
"start": 31,
"end": 36,
"elements": [
{
"type": "Literal",
"type": "Literal",
"start": 32,
"end": 33,
@ -46,6 +49,7 @@ expression: actual
"raw": "0"
},
{
"type": "Literal",
"type": "Literal",
"start": 34,
"end": 35,

View File

@ -12,6 +12,7 @@ expression: actual
"start": 0,
"end": 28,
"expression": {
"type": "CallExpression",
"type": "CallExpression",
"start": 0,
"end": 28,
@ -23,6 +24,7 @@ expression: actual
},
"arguments": [
{
"type": "Literal",
"type": "Literal",
"start": 4,
"end": 5,
@ -30,6 +32,7 @@ expression: actual
"raw": "5"
},
{
"type": "Literal",
"type": "Literal",
"start": 7,
"end": 14,
@ -37,6 +40,7 @@ expression: actual
"raw": "\"hello\""
},
{
"type": "Identifier",
"type": "Identifier",
"start": 16,
"end": 27,

View File

@ -12,6 +12,7 @@ expression: actual
"start": 0,
"end": 7,
"expression": {
"type": "BinaryExpression",
"type": "BinaryExpression",
"start": 0,
"end": 7,

View File

@ -12,6 +12,7 @@ expression: actual
"start": 0,
"end": 15,
"expression": {
"type": "CallExpression",
"type": "CallExpression",
"start": 0,
"end": 15,
@ -23,11 +24,13 @@ expression: actual
},
"arguments": [
{
"type": "ArrayExpression",
"type": "ArrayExpression",
"start": 5,
"end": 11,
"elements": [
{
"type": "Literal",
"type": "Literal",
"start": 6,
"end": 7,
@ -35,6 +38,7 @@ expression: actual
"raw": "0"
},
{
"type": "Identifier",
"type": "Identifier",
"start": 9,
"end": 10,
@ -43,6 +47,7 @@ expression: actual
]
},
{
"type": "PipeSubstitution",
"type": "PipeSubstitution",
"start": 13,
"end": 14

View File

@ -23,11 +23,13 @@ expression: actual
"name": "cylinder"
},
"init": {
"type": "PipeExpression",
"type": "PipeExpression",
"start": 17,
"end": 107,
"body": [
{
"type": "CallExpression",
"type": "CallExpression",
"start": 17,
"end": 36,
@ -39,6 +41,7 @@ expression: actual
},
"arguments": [
{
"type": "Literal",
"type": "Literal",
"start": 31,
"end": 35,
@ -49,6 +52,7 @@ expression: actual
"optional": false
},
{
"type": "CallExpression",
"type": "CallExpression",
"start": 44,
"end": 85,
@ -60,6 +64,7 @@ expression: actual
},
"arguments": [
{
"type": "ObjectExpression",
"type": "ObjectExpression",
"start": 51,
"end": 81,
@ -75,11 +80,13 @@ expression: actual
"name": "center"
},
"value": {
"type": "ArrayExpression",
"type": "ArrayExpression",
"start": 61,
"end": 67,
"elements": [
{
"type": "Literal",
"type": "Literal",
"start": 62,
"end": 63,
@ -87,6 +94,7 @@ expression: actual
"raw": "0"
},
{
"type": "Literal",
"type": "Literal",
"start": 65,
"end": 66,
@ -107,6 +115,7 @@ expression: actual
"name": "radius"
},
"value": {
"type": "Literal",
"type": "Literal",
"start": 77,
"end": 79,
@ -117,6 +126,7 @@ expression: actual
]
},
{
"type": "PipeSubstitution",
"type": "PipeSubstitution",
"start": 83,
"end": 84
@ -125,6 +135,7 @@ expression: actual
"optional": false
},
{
"type": "CallExpression",
"type": "CallExpression",
"start": 93,
"end": 107,
@ -136,6 +147,7 @@ expression: actual
},
"arguments": [
{
"type": "Literal",
"type": "Literal",
"start": 101,
"end": 103,
@ -143,6 +155,7 @@ expression: actual
"raw": "14"
},
{
"type": "PipeSubstitution",
"type": "PipeSubstitution",
"start": 105,
"end": 106

View File

@ -23,6 +23,7 @@ expression: actual
"name": "f"
},
"init": {
"type": "FunctionExpression",
"type": "FunctionExpression",
"start": 7,
"end": 49,
@ -48,6 +49,7 @@ expression: actual
"start": 21,
"end": 47,
"argument": {
"type": "CallExpression",
"type": "CallExpression",
"start": 28,
"end": 47,
@ -59,12 +61,14 @@ expression: actual
},
"arguments": [
{
"type": "Identifier",
"type": "Identifier",
"start": 36,
"end": 41,
"name": "angle"
},
{
"type": "Literal",
"type": "Literal",
"start": 43,
"end": 46,

View File

@ -23,11 +23,13 @@ expression: actual
"name": "numbers"
},
"init": {
"type": "ArrayExpression",
"type": "ArrayExpression",
"start": 14,
"end": 91,
"elements": [
{
"type": "Literal",
"type": "Literal",
"start": 28,
"end": 29,
@ -35,6 +37,7 @@ expression: actual
"raw": "1"
},
{
"type": "Literal",
"type": "Literal",
"start": 79,
"end": 80,

View File

@ -23,11 +23,13 @@ expression: actual
"name": "numbers"
},
"init": {
"type": "ArrayExpression",
"type": "ArrayExpression",
"start": 14,
"end": 91,
"elements": [
{
"type": "Literal",
"type": "Literal",
"start": 28,
"end": 29,
@ -35,6 +37,7 @@ expression: actual
"raw": "1"
},
{
"type": "Literal",
"type": "Literal",
"start": 43,
"end": 44,

View File

@ -23,6 +23,7 @@ expression: actual
"name": "props"
},
"init": {
"type": "ObjectExpression",
"type": "ObjectExpression",
"start": 12,
"end": 80,
@ -38,6 +39,7 @@ expression: actual
"name": "a"
},
"value": {
"type": "Literal",
"type": "Literal",
"start": 29,
"end": 30,
@ -56,6 +58,7 @@ expression: actual
"name": "c"
},
"value": {
"type": "Literal",
"type": "Literal",
"start": 68,
"end": 69,

View File

@ -23,6 +23,7 @@ expression: actual
"name": "props"
},
"init": {
"type": "ObjectExpression",
"type": "ObjectExpression",
"start": 12,
"end": 79,
@ -38,6 +39,7 @@ expression: actual
"name": "a"
},
"value": {
"type": "Literal",
"type": "Literal",
"start": 29,
"end": 30,
@ -56,6 +58,7 @@ expression: actual
"name": "c"
},
"value": {
"type": "Literal",
"type": "Literal",
"start": 68,
"end": 69,

View File

@ -23,6 +23,7 @@ expression: actual
"name": "myVar"
},
"init": {
"type": "CallExpression",
"type": "CallExpression",
"start": 14,
"end": 36,
@ -34,6 +35,7 @@ expression: actual
},
"arguments": [
{
"type": "Literal",
"type": "Literal",
"start": 18,
"end": 19,
@ -41,6 +43,7 @@ expression: actual
"raw": "5"
},
{
"type": "UnaryExpression",
"type": "UnaryExpression",
"start": 22,
"end": 35,
@ -58,6 +61,7 @@ expression: actual
},
"arguments": [
{
"type": "Literal",
"type": "Literal",
"start": 30,
"end": 31,
@ -65,6 +69,7 @@ expression: actual
"raw": "5"
},
{
"type": "Literal",
"type": "Literal",
"start": 33,
"end": 34,

View File

@ -23,11 +23,13 @@ expression: actual
"name": "sketch001"
},
"init": {
"type": "PipeExpression",
"type": "PipeExpression",
"start": 19,
"end": 132,
"body": [
{
"type": "CallExpression",
"type": "CallExpression",
"start": 19,
"end": 38,
@ -39,6 +41,7 @@ expression: actual
},
"arguments": [
{
"type": "Literal",
"type": "Literal",
"start": 33,
"end": 37,
@ -49,6 +52,7 @@ expression: actual
"optional": false
},
{
"type": "CallExpression",
"type": "CallExpression",
"start": 115,
"end": 132,
@ -60,6 +64,7 @@ expression: actual
},
"arguments": [
{
"type": "PipeSubstitution",
"type": "PipeSubstitution",
"start": 130,
"end": 131

View File

@ -23,6 +23,7 @@ expression: actual
"name": "my14"
},
"init": {
"type": "BinaryExpression",
"type": "BinaryExpression",
"start": 14,
"end": 31,

View File

@ -23,10 +23,12 @@ expression: actual
"name": "x"
},
"init": {
"type": "IfExpression",
"type": "IfExpression",
"start": 10,
"end": 74,
"cond": {
"type": "Literal",
"type": "Literal",
"start": 13,
"end": 17,
@ -43,6 +45,7 @@ expression: actual
"start": 32,
"end": 33,
"expression": {
"type": "Literal",
"type": "Literal",
"start": 32,
"end": 33,
@ -63,6 +66,7 @@ expression: actual
"start": 63,
"end": 64,
"expression": {
"type": "Literal",
"type": "Literal",
"start": 63,
"end": 64,

View File

@ -23,10 +23,12 @@ expression: actual
"name": "x"
},
"init": {
"type": "IfExpression",
"type": "IfExpression",
"start": 10,
"end": 121,
"cond": {
"type": "Literal",
"type": "Literal",
"start": 13,
"end": 17,
@ -43,6 +45,7 @@ expression: actual
"start": 32,
"end": 33,
"expression": {
"type": "Literal",
"type": "Literal",
"start": 32,
"end": 33,
@ -58,6 +61,7 @@ expression: actual
"start": 44,
"end": 90,
"cond": {
"type": "CallExpression",
"type": "CallExpression",
"start": 52,
"end": 64,
@ -69,6 +73,7 @@ expression: actual
},
"arguments": [
{
"type": "Identifier",
"type": "Identifier",
"start": 57,
"end": 63,
@ -87,6 +92,7 @@ expression: actual
"start": 79,
"end": 80,
"expression": {
"type": "Literal",
"type": "Literal",
"start": 79,
"end": 80,
@ -109,6 +115,7 @@ expression: actual
"start": 110,
"end": 111,
"expression": {
"type": "Literal",
"type": "Literal",
"start": 110,
"end": 111,

View File

@ -23,6 +23,7 @@ expression: actual
"name": "x"
},
"init": {
"type": "BinaryExpression",
"type": "BinaryExpression",
"start": 8,
"end": 14,

View File

@ -23,6 +23,7 @@ expression: actual
"name": "x"
},
"init": {
"type": "BinaryExpression",
"type": "BinaryExpression",
"start": 8,
"end": 14,

View File

@ -23,6 +23,7 @@ expression: actual
"name": "x"
},
"init": {
"type": "Literal",
"type": "Literal",
"start": 4,
"end": 5,

View File

@ -23,6 +23,7 @@ expression: actual
"name": "obj"
},
"init": {
"type": "ObjectExpression",
"type": "ObjectExpression",
"start": 12,
"end": 42,
@ -38,11 +39,13 @@ expression: actual
"name": "center"
},
"value": {
"type": "ArrayExpression",
"type": "ArrayExpression",
"start": 22,
"end": 30,
"elements": [
{
"type": "Literal",
"type": "Literal",
"start": 23,
"end": 25,
@ -50,6 +53,7 @@ expression: actual
"raw": "10"
},
{
"type": "Literal",
"type": "Literal",
"start": 27,
"end": 29,
@ -70,6 +74,7 @@ expression: actual
"name": "radius"
},
"value": {
"type": "Literal",
"type": "Literal",
"start": 40,
"end": 41,

View File

@ -23,6 +23,7 @@ expression: actual
"name": "myVar"
},
"init": {
"type": "CallExpression",
"type": "CallExpression",
"start": 14,
"end": 35,
@ -34,6 +35,7 @@ expression: actual
},
"arguments": [
{
"type": "UnaryExpression",
"type": "UnaryExpression",
"start": 18,
"end": 31,
@ -51,6 +53,7 @@ expression: actual
},
"arguments": [
{
"type": "Literal",
"type": "Literal",
"start": 26,
"end": 27,
@ -58,6 +61,7 @@ expression: actual
"raw": "5"
},
{
"type": "Literal",
"type": "Literal",
"start": 29,
"end": 30,
@ -69,6 +73,7 @@ expression: actual
}
},
{
"type": "Literal",
"type": "Literal",
"start": 33,
"end": 34,

View File

@ -23,11 +23,13 @@ expression: actual
"name": "myVar"
},
"init": {
"type": "PipeExpression",
"type": "PipeExpression",
"start": 14,
"end": 36,
"body": [
{
"type": "BinaryExpression",
"type": "BinaryExpression",
"start": 14,
"end": 19,
@ -50,6 +52,7 @@ expression: actual
}
},
{
"type": "CallExpression",
"type": "CallExpression",
"start": 23,
"end": 36,
@ -61,6 +64,7 @@ expression: actual
},
"arguments": [
{
"type": "Literal",
"type": "Literal",
"start": 30,
"end": 32,
@ -68,6 +72,7 @@ expression: actual
"raw": "45"
},
{
"type": "PipeSubstitution",
"type": "PipeSubstitution",
"start": 34,
"end": 35

View File

@ -23,6 +23,7 @@ expression: actual
"name": "x"
},
"init": {
"type": "BinaryExpression",
"type": "BinaryExpression",
"start": 10,
"end": 27,

View File

@ -23,6 +23,7 @@ expression: actual
"name": "x"
},
"init": {
"type": "BinaryExpression",
"type": "BinaryExpression",
"start": 8,
"end": 18,

View File

@ -23,6 +23,7 @@ expression: actual
"name": "x"
},
"init": {
"type": "Literal",
"type": "Literal",
"start": 10,
"end": 11,

View File

@ -23,6 +23,7 @@ expression: actual
"name": "x"
},
"init": {
"type": "FunctionExpression",
"type": "FunctionExpression",
"start": 7,
"end": 58,
@ -37,6 +38,7 @@ expression: actual
"start": 23,
"end": 32,
"argument": {
"type": "Identifier",
"type": "Identifier",
"start": 30,
"end": 32,
@ -49,6 +51,7 @@ expression: actual
"start": 41,
"end": 50,
"argument": {
"type": "Identifier",
"type": "Identifier",
"start": 48,
"end": 50,

View File

@ -23,6 +23,7 @@ expression: actual
"name": "obj"
},
"init": {
"type": "ObjectExpression",
"type": "ObjectExpression",
"start": 12,
"end": 26,
@ -38,6 +39,7 @@ expression: actual
"name": "a"
},
"value": {
"type": "Literal",
"type": "Literal",
"start": 17,
"end": 18,
@ -56,6 +58,7 @@ expression: actual
"name": "b"
},
"value": {
"type": "Literal",
"type": "Literal",
"start": 23,
"end": 24,
@ -86,6 +89,7 @@ expression: actual
"name": "height"
},
"init": {
"type": "BinaryExpression",
"type": "BinaryExpression",
"start": 46,
"end": 55,

View File

@ -23,6 +23,7 @@ expression: actual
"name": "obj"
},
"init": {
"type": "ObjectExpression",
"type": "ObjectExpression",
"start": 12,
"end": 26,
@ -38,6 +39,7 @@ expression: actual
"name": "a"
},
"value": {
"type": "Literal",
"type": "Literal",
"start": 17,
"end": 18,
@ -56,6 +58,7 @@ expression: actual
"name": "b"
},
"value": {
"type": "Literal",
"type": "Literal",
"start": 23,
"end": 24,
@ -86,6 +89,7 @@ expression: actual
"name": "height"
},
"init": {
"type": "BinaryExpression",
"type": "BinaryExpression",
"start": 47,
"end": 59,

View File

@ -23,6 +23,7 @@ expression: actual
"name": "obj"
},
"init": {
"type": "ObjectExpression",
"type": "ObjectExpression",
"start": 12,
"end": 26,
@ -38,6 +39,7 @@ expression: actual
"name": "a"
},
"value": {
"type": "Literal",
"type": "Literal",
"start": 17,
"end": 18,
@ -56,6 +58,7 @@ expression: actual
"name": "b"
},
"value": {
"type": "Literal",
"type": "Literal",
"start": 23,
"end": 24,
@ -86,6 +89,7 @@ expression: actual
"name": "height"
},
"init": {
"type": "BinaryExpression",
"type": "BinaryExpression",
"start": 46,
"end": 58,

View File

@ -23,6 +23,7 @@ expression: actual
"name": "obj"
},
"init": {
"type": "ObjectExpression",
"type": "ObjectExpression",
"start": 12,
"end": 26,
@ -38,6 +39,7 @@ expression: actual
"name": "a"
},
"value": {
"type": "Literal",
"type": "Literal",
"start": 17,
"end": 18,
@ -56,6 +58,7 @@ expression: actual
"name": "b"
},
"value": {
"type": "Literal",
"type": "Literal",
"start": 23,
"end": 24,
@ -86,11 +89,13 @@ expression: actual
"name": "height"
},
"init": {
"type": "ArrayExpression",
"type": "ArrayExpression",
"start": 46,
"end": 63,
"elements": [
{
"type": "BinaryExpression",
"type": "BinaryExpression",
"start": 47,
"end": 59,
@ -127,6 +132,7 @@ expression: actual
}
},
{
"type": "Literal",
"type": "Literal",
"start": 61,
"end": 62,

View File

@ -23,6 +23,7 @@ expression: actual
"name": "obj"
},
"init": {
"type": "ObjectExpression",
"type": "ObjectExpression",
"start": 12,
"end": 26,
@ -38,6 +39,7 @@ expression: actual
"name": "a"
},
"value": {
"type": "Literal",
"type": "Literal",
"start": 17,
"end": 18,
@ -56,6 +58,7 @@ expression: actual
"name": "b"
},
"value": {
"type": "Literal",
"type": "Literal",
"start": 23,
"end": 24,
@ -86,11 +89,13 @@ expression: actual
"name": "height"
},
"init": {
"type": "ArrayExpression",
"type": "ArrayExpression",
"start": 46,
"end": 63,
"elements": [
{
"type": "BinaryExpression",
"type": "BinaryExpression",
"start": 47,
"end": 59,
@ -127,6 +132,7 @@ expression: actual
}
},
{
"type": "Literal",
"type": "Literal",
"start": 61,
"end": 62,

View File

@ -23,6 +23,7 @@ expression: actual
"name": "obj"
},
"init": {
"type": "ObjectExpression",
"type": "ObjectExpression",
"start": 12,
"end": 26,
@ -38,6 +39,7 @@ expression: actual
"name": "a"
},
"value": {
"type": "Literal",
"type": "Literal",
"start": 17,
"end": 18,
@ -56,6 +58,7 @@ expression: actual
"name": "b"
},
"value": {
"type": "Literal",
"type": "Literal",
"start": 23,
"end": 24,
@ -86,11 +89,13 @@ expression: actual
"name": "height"
},
"init": {
"type": "ArrayExpression",
"type": "ArrayExpression",
"start": 46,
"end": 62,
"elements": [
{
"type": "BinaryExpression",
"type": "BinaryExpression",
"start": 47,
"end": 58,
@ -127,6 +132,7 @@ expression: actual
}
},
{
"type": "Literal",
"type": "Literal",
"start": 60,
"end": 61,

View File

@ -23,6 +23,7 @@ expression: actual
"name": "height"
},
"init": {
"type": "BinaryExpression",
"type": "BinaryExpression",
"start": 15,
"end": 24,

View File

@ -23,6 +23,7 @@ expression: actual
"name": "six"
},
"init": {
"type": "BinaryExpression",
"type": "BinaryExpression",
"start": 12,
"end": 21,

View File

@ -23,6 +23,7 @@ expression: actual
"name": "five"
},
"init": {
"type": "BinaryExpression",
"type": "BinaryExpression",
"start": 13,
"end": 22,

View File

@ -23,11 +23,13 @@ expression: actual
"name": "height"
},
"init": {
"type": "ArrayExpression",
"type": "ArrayExpression",
"start": 15,
"end": 30,
"elements": [
{
"type": "MemberExpression",
"type": "MemberExpression",
"start": 17,
"end": 25,
@ -49,6 +51,7 @@ expression: actual
"computed": false
},
{
"type": "Literal",
"type": "Literal",
"start": 27,
"end": 28,

View File

@ -23,6 +23,7 @@ expression: actual
"name": "obj"
},
"init": {
"type": "ObjectExpression",
"type": "ObjectExpression",
"start": 12,
"end": 26,
@ -38,6 +39,7 @@ expression: actual
"name": "a"
},
"value": {
"type": "Literal",
"type": "Literal",
"start": 17,
"end": 18,
@ -56,6 +58,7 @@ expression: actual
"name": "b"
},
"value": {
"type": "Literal",
"type": "Literal",
"start": 23,
"end": 24,
@ -86,6 +89,7 @@ expression: actual
"name": "height"
},
"init": {
"type": "MemberExpression",
"type": "MemberExpression",
"start": 46,
"end": 54,

View File

@ -23,6 +23,7 @@ expression: actual
"name": "prop"
},
"init": {
"type": "MemberExpression",
"type": "MemberExpression",
"start": 13,
"end": 27,

View File

@ -23,6 +23,7 @@ expression: actual
"name": "pt1"
},
"init": {
"type": "MemberExpression",
"type": "MemberExpression",
"start": 12,
"end": 17,

View File

@ -23,6 +23,7 @@ expression: actual
"name": "prop"
},
"init": {
"type": "MemberExpression",
"type": "MemberExpression",
"start": 13,
"end": 34,

View File

@ -23,6 +23,7 @@ expression: actual
"name": "pt1"
},
"init": {
"type": "MemberExpression",
"type": "MemberExpression",
"start": 12,
"end": 17,

View File

@ -23,6 +23,7 @@ expression: actual
"name": "pt1"
},
"init": {
"type": "MemberExpression",
"type": "MemberExpression",
"start": 12,
"end": 22,

View File

@ -23,6 +23,7 @@ expression: actual
"name": "pt1"
},
"init": {
"type": "MemberExpression",
"type": "MemberExpression",
"start": 12,
"end": 19,

View File

@ -23,6 +23,7 @@ expression: actual
"name": "sg"
},
"init": {
"type": "CallExpression",
"type": "CallExpression",
"start": 11,
"end": 29,
@ -34,6 +35,7 @@ expression: actual
},
"arguments": [
{
"type": "Identifier",
"type": "Identifier",
"start": 25,
"end": 28,

View File

@ -23,11 +23,13 @@ expression: actual
"name": "sg"
},
"init": {
"type": "PipeExpression",
"type": "PipeExpression",
"start": 11,
"end": 53,
"body": [
{
"type": "CallExpression",
"type": "CallExpression",
"start": 11,
"end": 29,
@ -39,6 +41,7 @@ expression: actual
},
"arguments": [
{
"type": "Identifier",
"type": "Identifier",
"start": 25,
"end": 28,
@ -48,6 +51,7 @@ expression: actual
"optional": false
},
{
"type": "CallExpression",
"type": "CallExpression",
"start": 33,
"end": 53,
@ -59,11 +63,13 @@ expression: actual
},
"arguments": [
{
"type": "ArrayExpression",
"type": "ArrayExpression",
"start": 38,
"end": 49,
"elements": [
{
"type": "Literal",
"type": "Literal",
"start": 39,
"end": 40,
@ -71,6 +77,7 @@ expression: actual
"raw": "0"
},
{
"type": "UnaryExpression",
"type": "UnaryExpression",
"start": 42,
"end": 48,
@ -86,6 +93,7 @@ expression: actual
]
},
{
"type": "PipeSubstitution",
"type": "PipeSubstitution",
"start": 51,
"end": 52