From 43bec115c01e1327437fff092ae272eda5f616f8 Mon Sep 17 00:00:00 2001 From: Jonathan Tran Date: Wed, 30 Oct 2024 16:52:17 -0400 Subject: [PATCH] Refactor source ranges into a generic node type (#4350) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * WIP Signed-off-by: Nick Cameron * Fix formatting * Fix yarn build:wasm * Fix ts_rs bindings * Fix tsc errors * Fix wasm TS types * Add minimal failing test * Rename field to avoid name collisions * Remove node wrapper around NonCodeMeta Trying to fix TS unit test errors deserializing JSON AST in Rust. * Rename Node to BoxNode * Fix lints * Fix lint by boxing literals * Rename UnboxedNode to Node * Look at this (photo)Graph *in the voice of Nickelback* * Update docs * Update snapshots * initial trait Signed-off-by: Jess Frazelle * update docs Signed-off-by: Jess Frazelle * updates Signed-off-by: Jess Frazelle * gross hack for TagNode Signed-off-by: Jess Frazelle * extend gross hack Signed-off-by: Jess Frazelle * fix EnvRef bullshit Signed-off-by: Jess Frazelle * Fix to fail parsing when a tag declarator matches a stdlib function name * Fix test errors after merging main * A snapshot a day keeps the bugs away! 📷🐛 (OS: ubuntu-latest) * Confirm * Change to use simpler map_err * Add comment --------- Signed-off-by: Nick Cameron Signed-off-by: Jess Frazelle Co-authored-by: Nick Cameron Co-authored-by: github-actions[bot] Co-authored-by: Jess Frazelle --- docs/kcl/std.json | 14664 +++++++--------- docs/kcl/types/BinaryPart.md | 28 +- docs/kcl/types/BodyItem.md | 16 +- docs/kcl/types/ElseIf.md | 4 +- docs/kcl/types/Environment.md | 2 +- docs/kcl/types/Expr.md | 60 +- docs/kcl/types/FunctionExpression.md | 4 +- docs/kcl/types/Identifier.md | 4 +- docs/kcl/types/ImportItem.md | 4 +- docs/kcl/types/KclValue.md | 4 +- docs/kcl/types/LiteralIdentifier.md | 8 +- docs/kcl/types/MemberObject.md | 8 +- docs/kcl/types/NonCodeMeta.md | 2 +- docs/kcl/types/NonCodeNode.md | 4 +- docs/kcl/types/ObjectProperty.md | 4 +- docs/kcl/types/Program.md | 4 +- docs/kcl/types/ProgramMemory.md | 2 +- docs/kcl/types/VariableDeclarator.md | 4 +- public/kcl-samples-manifest-fallback.json | 12 +- src/clientSideScene/ClientSideSceneComp.tsx | 5 +- src/clientSideScene/sceneEntities.ts | 29 +- src/components/ModelingMachineProvider.tsx | 5 +- src/components/Toolbar/EqualLength.tsx | 3 +- src/components/Toolbar/HorzVert.tsx | 5 +- src/components/Toolbar/Intersect.tsx | 3 +- .../Toolbar/RemoveConstrainingValues.tsx | 3 +- src/components/Toolbar/SetAbsDistance.tsx | 3 +- .../Toolbar/SetHorzVertDistance.tsx | 3 +- src/lang/KclSingleton.ts | 23 +- src/lang/langHelpers.ts | 3 +- src/lang/modifyAst.test.ts | 5 +- src/lang/modifyAst.ts | 75 +- src/lang/modifyAst/addFillet.ts | 19 +- src/lang/queryAst.ts | 23 +- src/lang/std/sketch.test.ts | 7 +- src/lang/std/sketch.ts | 45 +- src/lang/std/sketchcombos.ts | 22 +- src/lang/std/stdTypes.ts | 19 +- src/lang/wasm.test.ts | 13 + src/lang/wasm.ts | 15 +- src/lib/commandTypes.ts | 5 +- src/lib/selections.ts | 5 +- src/lib/testHelpers.ts | 5 +- src/wasm-lib/kcl-macros/tests/macro_test.rs | 66 +- src/wasm-lib/kcl/src/ast/modify.rs | 6 +- src/wasm-lib/kcl/src/ast/types.rs | 1286 +- src/wasm-lib/kcl/src/ast/types/condition.rs | 71 +- src/wasm-lib/kcl/src/ast/types/execute.rs | 34 +- .../kcl/src/ast/types/literal_value.rs | 6 +- src/wasm-lib/kcl/src/docs/gen_std_tests.rs | 7 +- src/wasm-lib/kcl/src/docs/mod.rs | 2 +- src/wasm-lib/kcl/src/executor.rs | 109 +- src/wasm-lib/kcl/src/function_param.rs | 2 +- .../kcl/src/lint/checks/std_lib_args.rs | 7 +- .../kcl/src/lsp/kcl/custom_notifications.rs | 4 +- src/wasm-lib/kcl/src/lsp/kcl/mod.rs | 6 +- src/wasm-lib/kcl/src/lsp/tests.rs | 53 +- src/wasm-lib/kcl/src/parser.rs | 10 +- src/wasm-lib/kcl/src/parser/math.rs | 61 +- src/wasm-lib/kcl/src/parser/parser_impl.rs | 1093 +- ...__parser_impl__snapshot_math_tests__a.snap | 18 +- ...__parser_impl__snapshot_math_tests__b.snap | 18 +- ...__parser_impl__snapshot_math_tests__c.snap | 18 +- ...__parser_impl__snapshot_math_tests__d.snap | 30 +- ...__parser_impl__snapshot_math_tests__e.snap | 30 +- ...__parser_impl__snapshot_math_tests__f.snap | 42 +- ...__parser_impl__snapshot_math_tests__g.snap | 42 +- ...__parser_impl__snapshot_math_tests__h.snap | 54 +- ...__parser_impl__snapshot_math_tests__i.snap | 30 +- ...__parser_impl__snapshot_math_tests__j.snap | 56 +- ...__parser_impl__snapshot_math_tests__k.snap | 18 +- ...arser__parser_impl__snapshot_tests__a.snap | 326 +- ...rser__parser_impl__snapshot_tests__aa.snap | 48 +- ...rser__parser_impl__snapshot_tests__ab.snap | 96 +- ...rser__parser_impl__snapshot_tests__ac.snap | 62 +- ...rser__parser_impl__snapshot_tests__ad.snap | 96 +- ...rser__parser_impl__snapshot_tests__ae.snap | 120 +- ...rser__parser_impl__snapshot_tests__af.snap | 304 +- ...rser__parser_impl__snapshot_tests__ag.snap | 176 +- ...rser__parser_impl__snapshot_tests__ah.snap | 58 +- ...rser__parser_impl__snapshot_tests__ai.snap | 108 +- ...rser__parser_impl__snapshot_tests__aj.snap | 124 +- ...rser__parser_impl__snapshot_tests__ak.snap | 84 +- ...rser__parser_impl__snapshot_tests__al.snap | 124 +- ...rser__parser_impl__snapshot_tests__am.snap | 84 +- ...rser__parser_impl__snapshot_tests__an.snap | 124 +- ...rser__parser_impl__snapshot_tests__ao.snap | 124 +- ...rser__parser_impl__snapshot_tests__ap.snap | 80 +- ...rser__parser_impl__snapshot_tests__aq.snap | 64 +- ...rser__parser_impl__snapshot_tests__ar.snap | 44 +- ...rser__parser_impl__snapshot_tests__at.snap | 70 +- ...rser__parser_impl__snapshot_tests__au.snap | 204 +- ...rser__parser_impl__snapshot_tests__av.snap | 124 +- ...rser__parser_impl__snapshot_tests__aw.snap | 68 +- ...rser__parser_impl__snapshot_tests__ax.snap | 68 +- ...rser__parser_impl__snapshot_tests__ay.snap | 122 +- ...rser__parser_impl__snapshot_tests__az.snap | 122 +- ...arser__parser_impl__snapshot_tests__b.snap | 114 +- ...rser__parser_impl__snapshot_tests__ba.snap | 116 +- ...rser__parser_impl__snapshot_tests__bb.snap | 138 +- ...rser__parser_impl__snapshot_tests__bc.snap | 112 +- ...rser__parser_impl__snapshot_tests__bd.snap | 174 +- ...rser__parser_impl__snapshot_tests__be.snap | 58 +- ...rser__parser_impl__snapshot_tests__bf.snap | 58 +- ...rser__parser_impl__snapshot_tests__bg.snap | 38 +- ...rser__parser_impl__snapshot_tests__bh.snap | 96 +- ...arser__parser_impl__snapshot_tests__c.snap | 114 +- ...arser__parser_impl__snapshot_tests__d.snap | 106 +- ...rser__parser_impl__snapshot_tests__d2.snap | 66 +- ...arser__parser_impl__snapshot_tests__e.snap | 78 +- ...arser__parser_impl__snapshot_tests__f.snap | 44 +- ...arser__parser_impl__snapshot_tests__g.snap | 82 +- ...arser__parser_impl__snapshot_tests__h.snap | 142 +- ...arser__parser_impl__snapshot_tests__i.snap | 144 +- ...arser__parser_impl__snapshot_tests__j.snap | 144 +- ...arser__parser_impl__snapshot_tests__k.snap | 164 +- ...arser__parser_impl__snapshot_tests__l.snap | 164 +- ...arser__parser_impl__snapshot_tests__m.snap | 164 +- ...arser__parser_impl__snapshot_tests__n.snap | 72 +- ...arser__parser_impl__snapshot_tests__o.snap | 78 +- ...arser__parser_impl__snapshot_tests__p.snap | 78 +- ...arser__parser_impl__snapshot_tests__q.snap | 74 +- ...arser__parser_impl__snapshot_tests__r.snap | 124 +- ...arser__parser_impl__snapshot_tests__s.snap | 70 +- ...arser__parser_impl__snapshot_tests__t.snap | 52 +- ...arser__parser_impl__snapshot_tests__u.snap | 100 +- ...arser__parser_impl__snapshot_tests__v.snap | 54 +- ...arser__parser_impl__snapshot_tests__w.snap | 54 +- ...arser__parser_impl__snapshot_tests__x.snap | 52 +- ...arser__parser_impl__snapshot_tests__y.snap | 58 +- ...arser__parser_impl__snapshot_tests__z.snap | 136 +- src/wasm-lib/kcl/src/simulation_tests.rs | 9 +- src/wasm-lib/kcl/src/std/args.rs | 20 +- src/wasm-lib/kcl/src/std/chamfer.rs | 6 +- src/wasm-lib/kcl/src/std/fillet.rs | 6 +- src/wasm-lib/kcl/src/std/kcl_stdlib.rs | 4 +- src/wasm-lib/kcl/src/std/mod.rs | 2 +- src/wasm-lib/kcl/src/std/shapes.rs | 10 +- src/wasm-lib/kcl/src/std/sketch.rs | 78 +- src/wasm-lib/kcl/src/test_server.rs | 6 +- src/wasm-lib/kcl/src/unparser.rs | 8 +- src/wasm-lib/kcl/src/walk/ast_node.rs | 102 +- src/wasm-lib/kcl/src/walk/ast_walk.rs | 18 +- src/wasm-lib/kcl/tests/cube/ast.snap | 1012 +- .../kcl/tests/cube/program_memory.snap | 852 +- src/wasm-lib/src/wasm.rs | 13 +- src/wasm-lib/tests/executor/no_visuals.rs | 4 +- src/wasm-lib/tests/modify/main.rs | 7 +- 148 files changed, 12935 insertions(+), 13924 deletions(-) create mode 100644 src/lang/wasm.test.ts diff --git a/docs/kcl/std.json b/docs/kcl/std.json index f26541e27..2a49b6a5f 100644 --- a/docs/kcl/std.json +++ b/docs/kcl/std.json @@ -685,21 +685,9 @@ "TagDeclarator": { "type": "object", "required": [ - "end", - "start", "value" ], "properties": { - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, "value": { "type": "string" }, @@ -713,6 +701,16 @@ "maxItems": 32, "minItems": 32, "nullable": true + }, + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 } } }, @@ -1539,21 +1537,9 @@ "TagDeclarator": { "type": "object", "required": [ - "end", - "start", "value" ], "properties": { - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, "value": { "type": "string" }, @@ -1567,6 +1553,16 @@ "maxItems": 32, "minItems": 32, "nullable": true + }, + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 } } }, @@ -2444,21 +2440,9 @@ "TagDeclarator": { "type": "object", "required": [ - "end", - "start", "value" ], "properties": { - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, "value": { "type": "string" }, @@ -2472,6 +2456,16 @@ "maxItems": 32, "minItems": 32, "nullable": true + }, + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 } } }, @@ -3806,21 +3800,9 @@ "TagDeclarator": { "type": "object", "required": [ - "end", - "start", "value" ], "properties": { - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, "value": { "type": "string" }, @@ -3834,6 +3816,16 @@ "maxItems": 32, "minItems": 32, "nullable": true + }, + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 } } }, @@ -4660,21 +4652,9 @@ "TagDeclarator": { "type": "object", "required": [ - "end", - "start", "value" ], "properties": { - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, "value": { "type": "string" }, @@ -4688,6 +4668,16 @@ "maxItems": 32, "minItems": 32, "nullable": true + }, + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 } } }, @@ -5565,21 +5555,9 @@ "TagDeclarator": { "type": "object", "required": [ - "end", - "start", "value" ], "properties": { - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, "value": { "type": "string" }, @@ -5593,6 +5571,16 @@ "maxItems": 32, "minItems": 32, "nullable": true + }, + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 } } }, @@ -6960,21 +6948,9 @@ "TagDeclarator": { "type": "object", "required": [ - "end", - "start", "value" ], "properties": { - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, "value": { "type": "string" }, @@ -6988,6 +6964,16 @@ "maxItems": 32, "minItems": 32, "nullable": true + }, + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 } } }, @@ -7732,7 +7718,7 @@ }, { "name": "tag", - "type": "TagDeclarator", + "type": "TagNode", "schema": { "$schema": "https://spec.openapis.org/oas/3.0/schema/2019-04-02#/definitions/Schema", "title": "Nullable_TagDeclarator", @@ -8280,21 +8266,9 @@ "TagDeclarator": { "type": "object", "required": [ - "end", - "start", "value" ], "properties": { - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, "value": { "type": "string" }, @@ -8308,6 +8282,16 @@ "maxItems": 32, "minItems": 32, "nullable": true + }, + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 } } }, @@ -9648,21 +9632,9 @@ "TagDeclarator": { "type": "object", "required": [ - "end", - "start", "value" ], "properties": { - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, "value": { "type": "string" }, @@ -9676,6 +9648,16 @@ "maxItems": 32, "minItems": 32, "nullable": true + }, + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 } } }, @@ -11069,21 +11051,9 @@ "TagDeclarator": { "type": "object", "required": [ - "end", - "start", "value" ], "properties": { - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, "value": { "type": "string" }, @@ -11097,6 +11067,16 @@ "maxItems": 32, "minItems": 32, "nullable": true + }, + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 } } }, @@ -11841,7 +11821,7 @@ }, { "name": "tag", - "type": "TagDeclarator", + "type": "TagNode", "schema": { "$schema": "https://spec.openapis.org/oas/3.0/schema/2019-04-02#/definitions/Schema", "title": "Nullable_TagDeclarator", @@ -12389,21 +12369,9 @@ "TagDeclarator": { "type": "object", "required": [ - "end", - "start", "value" ], "properties": { - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, "value": { "type": "string" }, @@ -12417,6 +12385,16 @@ "maxItems": 32, "minItems": 32, "nullable": true + }, + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 } } }, @@ -13757,21 +13735,9 @@ "TagDeclarator": { "type": "object", "required": [ - "end", - "start", "value" ], "properties": { - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, "value": { "type": "string" }, @@ -13785,6 +13751,16 @@ "maxItems": 32, "minItems": 32, "nullable": true + }, + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 } } }, @@ -15178,21 +15154,9 @@ "TagDeclarator": { "type": "object", "required": [ - "end", - "start", "value" ], "properties": { - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, "value": { "type": "string" }, @@ -15206,6 +15170,16 @@ "maxItems": 32, "minItems": 32, "nullable": true + }, + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 } } }, @@ -15950,7 +15924,7 @@ }, { "name": "tag", - "type": "TagDeclarator", + "type": "TagNode", "schema": { "$schema": "https://spec.openapis.org/oas/3.0/schema/2019-04-02#/definitions/Schema", "title": "Nullable_TagDeclarator", @@ -16498,21 +16472,9 @@ "TagDeclarator": { "type": "object", "required": [ - "end", - "start", "value" ], "properties": { - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, "value": { "type": "string" }, @@ -16526,6 +16488,16 @@ "maxItems": 32, "minItems": 32, "nullable": true + }, + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 } } }, @@ -17866,21 +17838,9 @@ "TagDeclarator": { "type": "object", "required": [ - "end", - "start", "value" ], "properties": { - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, "value": { "type": "string" }, @@ -17894,6 +17854,16 @@ "maxItems": 32, "minItems": 32, "nullable": true + }, + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 } } }, @@ -19283,21 +19253,9 @@ "TagDeclarator": { "type": "object", "required": [ - "end", - "start", "value" ], "properties": { - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, "value": { "type": "string" }, @@ -19311,6 +19269,16 @@ "maxItems": 32, "minItems": 32, "nullable": true + }, + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 } } }, @@ -20214,21 +20182,9 @@ "TagDeclarator": { "type": "object", "required": [ - "end", - "start", "value" ], "properties": { - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, "value": { "type": "string" }, @@ -20242,6 +20198,16 @@ "maxItems": 32, "minItems": 32, "nullable": true + }, + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 } } }, @@ -20922,7 +20888,7 @@ }, { "name": "tag", - "type": "TagDeclarator", + "type": "TagNode", "schema": { "$schema": "https://spec.openapis.org/oas/3.0/schema/2019-04-02#/definitions/Schema", "title": "Nullable_TagDeclarator", @@ -21534,21 +21500,9 @@ "TagDeclarator": { "type": "object", "required": [ - "end", - "start", "value" ], "properties": { - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, "value": { "type": "string" }, @@ -21562,6 +21516,16 @@ "maxItems": 32, "minItems": 32, "nullable": true + }, + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 } } }, @@ -22838,21 +22802,9 @@ "TagDeclarator": { "type": "object", "required": [ - "end", - "start", "value" ], "properties": { - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, "value": { "type": "string" }, @@ -22866,6 +22818,16 @@ "maxItems": 32, "minItems": 32, "nullable": true + }, + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 } } }, @@ -24244,21 +24206,9 @@ "TagDeclarator": { "type": "object", "required": [ - "end", - "start", "value" ], "properties": { - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, "value": { "type": "string" }, @@ -24272,6 +24222,16 @@ "maxItems": 32, "minItems": 32, "nullable": true + }, + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 } } }, @@ -25016,7 +24976,7 @@ }, { "name": "tag", - "type": "TagDeclarator", + "type": "TagNode", "schema": { "$schema": "https://spec.openapis.org/oas/3.0/schema/2019-04-02#/definitions/Schema", "title": "Nullable_TagDeclarator", @@ -25564,21 +25524,9 @@ "TagDeclarator": { "type": "object", "required": [ - "end", - "start", "value" ], "properties": { - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, "value": { "type": "string" }, @@ -25592,6 +25540,16 @@ "maxItems": 32, "minItems": 32, "nullable": true + }, + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 } } }, @@ -26932,21 +26890,9 @@ "TagDeclarator": { "type": "object", "required": [ - "end", - "start", "value" ], "properties": { - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, "value": { "type": "string" }, @@ -26960,6 +26906,16 @@ "maxItems": 32, "minItems": 32, "nullable": true + }, + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 } } }, @@ -28338,21 +28294,9 @@ "TagDeclarator": { "type": "object", "required": [ - "end", - "start", "value" ], "properties": { - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, "value": { "type": "string" }, @@ -28366,6 +28310,16 @@ "maxItems": 32, "minItems": 32, "nullable": true + }, + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 } } }, @@ -29110,7 +29064,7 @@ }, { "name": "tag", - "type": "TagDeclarator", + "type": "TagNode", "schema": { "$schema": "https://spec.openapis.org/oas/3.0/schema/2019-04-02#/definitions/Schema", "title": "Nullable_TagDeclarator", @@ -29658,21 +29612,9 @@ "TagDeclarator": { "type": "object", "required": [ - "end", - "start", "value" ], "properties": { - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, "value": { "type": "string" }, @@ -29686,6 +29628,16 @@ "maxItems": 32, "minItems": 32, "nullable": true + }, + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 } } }, @@ -31026,21 +30978,9 @@ "TagDeclarator": { "type": "object", "required": [ - "end", - "start", "value" ], "properties": { - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, "value": { "type": "string" }, @@ -31054,6 +30994,16 @@ "maxItems": 32, "minItems": 32, "nullable": true + }, + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 } } }, @@ -32483,21 +32433,9 @@ "TagDeclarator": { "type": "object", "required": [ - "end", - "start", "value" ], "properties": { - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, "value": { "type": "string" }, @@ -32511,6 +32449,16 @@ "maxItems": 32, "minItems": 32, "nullable": true + }, + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 } } }, @@ -33255,7 +33203,7 @@ }, { "name": "tag", - "type": "TagDeclarator", + "type": "TagNode", "schema": { "$schema": "https://spec.openapis.org/oas/3.0/schema/2019-04-02#/definitions/Schema", "title": "Nullable_TagDeclarator", @@ -33803,21 +33751,9 @@ "TagDeclarator": { "type": "object", "required": [ - "end", - "start", "value" ], "properties": { - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, "value": { "type": "string" }, @@ -33831,6 +33767,16 @@ "maxItems": 32, "minItems": 32, "nullable": true + }, + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 } } }, @@ -35171,21 +35117,9 @@ "TagDeclarator": { "type": "object", "required": [ - "end", - "start", "value" ], "properties": { - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, "value": { "type": "string" }, @@ -35199,6 +35133,16 @@ "maxItems": 32, "minItems": 32, "nullable": true + }, + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 } } }, @@ -37001,21 +36945,9 @@ "TagDeclarator": { "type": "object", "required": [ - "end", - "start", "value" ], "properties": { - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, "value": { "type": "string" }, @@ -37029,6 +36961,16 @@ "maxItems": 32, "minItems": 32, "nullable": true + }, + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 } } }, @@ -37773,7 +37715,7 @@ }, { "name": "tag", - "type": "TagDeclarator", + "type": "TagNode", "schema": { "$schema": "https://spec.openapis.org/oas/3.0/schema/2019-04-02#/definitions/Schema", "title": "Nullable_TagDeclarator", @@ -38321,21 +38263,9 @@ "TagDeclarator": { "type": "object", "required": [ - "end", - "start", "value" ], "properties": { - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, "value": { "type": "string" }, @@ -38349,6 +38279,16 @@ "maxItems": 32, "minItems": 32, "nullable": true + }, + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 } } }, @@ -39689,21 +39629,9 @@ "TagDeclarator": { "type": "object", "required": [ - "end", - "start", "value" ], "properties": { - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, "value": { "type": "string" }, @@ -39717,6 +39645,16 @@ "maxItems": 32, "minItems": 32, "nullable": true + }, + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 } } }, @@ -41154,21 +41092,9 @@ "TagDeclarator": { "type": "object", "required": [ - "end", - "start", "value" ], "properties": { - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, "value": { "type": "string" }, @@ -41182,6 +41108,16 @@ "maxItems": 32, "minItems": 32, "nullable": true + }, + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 } } }, @@ -42112,21 +42048,9 @@ "TagDeclarator": { "type": "object", "required": [ - "end", - "start", "value" ], "properties": { - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, "value": { "type": "string" }, @@ -42140,6 +42064,16 @@ "maxItems": 32, "minItems": 32, "nullable": true + }, + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 } } }, @@ -42820,7 +42754,7 @@ }, { "name": "tag", - "type": "TagDeclarator", + "type": "TagNode", "schema": { "$schema": "https://spec.openapis.org/oas/3.0/schema/2019-04-02#/definitions/Schema", "title": "Nullable_TagDeclarator", @@ -43450,21 +43384,9 @@ "TagDeclarator": { "type": "object", "required": [ - "end", - "start", "value" ], "properties": { - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, "value": { "type": "string" }, @@ -43478,6 +43400,16 @@ "maxItems": 32, "minItems": 32, "nullable": true + }, + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 } } }, @@ -44414,21 +44346,9 @@ "TagDeclarator": { "type": "object", "required": [ - "end", - "start", "value" ], "properties": { - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, "value": { "type": "string" }, @@ -44442,6 +44362,16 @@ "maxItems": 32, "minItems": 32, "nullable": true + }, + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 } } }, @@ -46057,21 +45987,9 @@ "TagDeclarator": { "type": "object", "required": [ - "end", - "start", "value" ], "properties": { - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, "value": { "type": "string" }, @@ -46085,6 +46003,16 @@ "maxItems": 32, "minItems": 32, "nullable": true + }, + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 } } }, @@ -46903,7 +46831,7 @@ }, { "name": "tag", - "type": "TagDeclarator", + "type": "TagNode", "schema": { "$schema": "https://spec.openapis.org/oas/3.0/schema/2019-04-02#/definitions/Schema", "title": "Nullable_TagDeclarator", @@ -47377,21 +47305,9 @@ "TagDeclarator": { "type": "object", "required": [ - "end", - "start", "value" ], "properties": { - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, "value": { "type": "string" }, @@ -47405,6 +47321,16 @@ "maxItems": 32, "minItems": 32, "nullable": true + }, + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 } } }, @@ -48819,21 +48745,9 @@ "TagDeclarator": { "type": "object", "required": [ - "end", - "start", "value" ], "properties": { - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, "value": { "type": "string" }, @@ -48847,6 +48761,16 @@ "maxItems": 32, "minItems": 32, "nullable": true + }, + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 } } }, @@ -50199,21 +50123,9 @@ "TagDeclarator": { "type": "object", "required": [ - "end", - "start", "value" ], "properties": { - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, "value": { "type": "string" }, @@ -50227,6 +50139,16 @@ "maxItems": 32, "minItems": 32, "nullable": true + }, + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 } } }, @@ -50971,7 +50893,7 @@ }, { "name": "tag", - "type": "TagDeclarator", + "type": "TagNode", "schema": { "$schema": "https://spec.openapis.org/oas/3.0/schema/2019-04-02#/definitions/Schema", "title": "Nullable_TagDeclarator", @@ -51519,21 +51441,9 @@ "TagDeclarator": { "type": "object", "required": [ - "end", - "start", "value" ], "properties": { - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, "value": { "type": "string" }, @@ -51547,6 +51457,16 @@ "maxItems": 32, "minItems": 32, "nullable": true + }, + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 } } }, @@ -52887,21 +52807,9 @@ "TagDeclarator": { "type": "object", "required": [ - "end", - "start", "value" ], "properties": { - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, "value": { "type": "string" }, @@ -52915,6 +52823,16 @@ "maxItems": 32, "minItems": 32, "nullable": true + }, + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 } } }, @@ -54397,21 +54315,9 @@ "TagDeclarator": { "type": "object", "required": [ - "end", - "start", "value" ], "properties": { - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, "value": { "type": "string" }, @@ -54425,6 +54331,16 @@ "maxItems": 32, "minItems": 32, "nullable": true + }, + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 } } }, @@ -55457,21 +55373,9 @@ "TagDeclarator": { "type": "object", "required": [ - "end", - "start", "value" ], "properties": { - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, "value": { "type": "string" }, @@ -55485,6 +55389,16 @@ "maxItems": 32, "minItems": 32, "nullable": true + }, + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 } } }, @@ -57242,21 +57156,9 @@ "TagDeclarator": { "type": "object", "required": [ - "end", - "start", "value" ], "properties": { - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, "value": { "type": "string" }, @@ -57270,6 +57172,16 @@ "maxItems": 32, "minItems": 32, "nullable": true + }, + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 } } }, @@ -58200,21 +58112,9 @@ "TagDeclarator": { "type": "object", "required": [ - "end", - "start", "value" ], "properties": { - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, "value": { "type": "string" }, @@ -58228,6 +58128,16 @@ "maxItems": 32, "minItems": 32, "nullable": true + }, + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 } } }, @@ -58908,7 +58818,7 @@ }, { "name": "tag", - "type": "TagDeclarator", + "type": "TagNode", "schema": { "$schema": "https://spec.openapis.org/oas/3.0/schema/2019-04-02#/definitions/Schema", "title": "Nullable_TagDeclarator", @@ -59538,21 +59448,9 @@ "TagDeclarator": { "type": "object", "required": [ - "end", - "start", "value" ], "properties": { - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, "value": { "type": "string" }, @@ -59566,6 +59464,16 @@ "maxItems": 32, "minItems": 32, "nullable": true + }, + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 } } }, @@ -60502,21 +60410,9 @@ "TagDeclarator": { "type": "object", "required": [ - "end", - "start", "value" ], "properties": { - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, "value": { "type": "string" }, @@ -60530,6 +60426,16 @@ "maxItems": 32, "minItems": 32, "nullable": true + }, + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 } } }, @@ -62302,21 +62208,9 @@ "TagDeclarator": { "type": "object", "required": [ - "end", - "start", "value" ], "properties": { - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, "value": { "type": "string" }, @@ -62330,6 +62224,16 @@ "maxItems": 32, "minItems": 32, "nullable": true + }, + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 } } }, @@ -63202,21 +63106,9 @@ "TagDeclarator": { "type": "object", "required": [ - "end", - "start", "value" ], "properties": { - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, "value": { "type": "string" }, @@ -63230,6 +63122,16 @@ "maxItems": 32, "minItems": 32, "nullable": true + }, + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 } } }, @@ -64102,21 +64004,9 @@ "TagDeclarator": { "type": "object", "required": [ - "end", - "start", "value" ], "properties": { - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, "value": { "type": "string" }, @@ -64130,6 +64020,16 @@ "maxItems": 32, "minItems": 32, "nullable": true + }, + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 } } }, @@ -64691,21 +64591,9 @@ "TagDeclarator": { "type": "object", "required": [ - "end", - "start", "value" ], "properties": { - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, "value": { "type": "string" }, @@ -64719,6 +64607,16 @@ "maxItems": 32, "minItems": 32, "nullable": true + }, + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 } } }, @@ -66068,21 +65966,9 @@ "TagDeclarator": { "type": "object", "required": [ - "end", - "start", "value" ], "properties": { - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, "value": { "type": "string" }, @@ -66096,6 +65982,16 @@ "maxItems": 32, "minItems": 32, "nullable": true + }, + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 } } }, @@ -67828,21 +67724,9 @@ "TagDeclarator": { "type": "object", "required": [ - "end", - "start", "value" ], "properties": { - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, "value": { "type": "string" }, @@ -67856,6 +67740,16 @@ "maxItems": 32, "minItems": 32, "nullable": true + }, + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 } } }, @@ -69195,21 +69089,9 @@ "TagDeclarator": { "type": "object", "required": [ - "end", - "start", "value" ], "properties": { - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, "value": { "type": "string" }, @@ -69223,6 +69105,16 @@ "maxItems": 32, "minItems": 32, "nullable": true + }, + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 } } }, @@ -70563,21 +70455,9 @@ "TagDeclarator": { "type": "object", "required": [ - "end", - "start", "value" ], "properties": { - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, "value": { "type": "string" }, @@ -70591,6 +70471,16 @@ "maxItems": 32, "minItems": 32, "nullable": true + }, + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 } } }, @@ -71614,21 +71504,9 @@ "TagDeclarator": { "type": "object", "required": [ - "end", - "start", "value" ], "properties": { - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, "value": { "type": "string" }, @@ -71642,6 +71520,16 @@ "maxItems": 32, "minItems": 32, "nullable": true + }, + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 } } }, @@ -72991,21 +72879,9 @@ "TagDeclarator": { "type": "object", "required": [ - "end", - "start", "value" ], "properties": { - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, "value": { "type": "string" }, @@ -73019,6 +72895,16 @@ "maxItems": 32, "minItems": 32, "nullable": true + }, + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 } } }, @@ -75193,21 +75079,9 @@ "TagDeclarator": { "type": "object", "required": [ - "end", - "start", "value" ], "properties": { - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, "value": { "type": "string" }, @@ -75221,6 +75095,16 @@ "maxItems": 32, "minItems": 32, "nullable": true + }, + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 } } }, @@ -76584,21 +76468,9 @@ "TagDeclarator": { "type": "object", "required": [ - "end", - "start", "value" ], "properties": { - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, "value": { "type": "string" }, @@ -76612,6 +76484,16 @@ "maxItems": 32, "minItems": 32, "nullable": true + }, + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 } } }, @@ -78135,21 +78017,9 @@ "TagDeclarator": { "type": "object", "required": [ - "end", - "start", "value" ], "properties": { - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, "value": { "type": "string" }, @@ -78163,6 +78033,16 @@ "maxItems": 32, "minItems": 32, "nullable": true + }, + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 } } }, @@ -78907,7 +78787,7 @@ }, { "name": "tag", - "type": "TagDeclarator", + "type": "TagNode", "schema": { "$schema": "https://spec.openapis.org/oas/3.0/schema/2019-04-02#/definitions/Schema", "title": "Nullable_TagDeclarator", @@ -79455,21 +79335,9 @@ "TagDeclarator": { "type": "object", "required": [ - "end", - "start", "value" ], "properties": { - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, "value": { "type": "string" }, @@ -79483,6 +79351,16 @@ "maxItems": 32, "minItems": 32, "nullable": true + }, + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 } } }, @@ -80823,21 +80701,9 @@ "TagDeclarator": { "type": "object", "required": [ - "end", - "start", "value" ], "properties": { - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, "value": { "type": "string" }, @@ -80851,6 +80717,16 @@ "maxItems": 32, "minItems": 32, "nullable": true + }, + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 } } }, @@ -82219,21 +82095,9 @@ "TagDeclarator": { "type": "object", "required": [ - "end", - "start", "value" ], "properties": { - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, "value": { "type": "string" }, @@ -82247,6 +82111,16 @@ "maxItems": 32, "minItems": 32, "nullable": true + }, + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 } } }, @@ -82991,7 +82865,7 @@ }, { "name": "tag", - "type": "TagDeclarator", + "type": "TagNode", "schema": { "$schema": "https://spec.openapis.org/oas/3.0/schema/2019-04-02#/definitions/Schema", "title": "Nullable_TagDeclarator", @@ -83539,21 +83413,9 @@ "TagDeclarator": { "type": "object", "required": [ - "end", - "start", "value" ], "properties": { - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, "value": { "type": "string" }, @@ -83567,6 +83429,16 @@ "maxItems": 32, "minItems": 32, "nullable": true + }, + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 } } }, @@ -84907,21 +84779,9 @@ "TagDeclarator": { "type": "object", "required": [ - "end", - "start", "value" ], "properties": { - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, "value": { "type": "string" }, @@ -84935,6 +84795,16 @@ "maxItems": 32, "minItems": 32, "nullable": true + }, + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 } } }, @@ -86329,21 +86199,9 @@ "TagDeclarator": { "type": "object", "required": [ - "end", - "start", "value" ], "properties": { - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, "value": { "type": "string" }, @@ -86357,6 +86215,16 @@ "maxItems": 32, "minItems": 32, "nullable": true + }, + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 } } }, @@ -87649,21 +87517,9 @@ "TagDeclarator": { "type": "object", "required": [ - "end", - "start", "value" ], "properties": { - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, "value": { "type": "string" }, @@ -87677,6 +87533,16 @@ "maxItems": 32, "minItems": 32, "nullable": true + }, + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 } } }, @@ -88656,21 +88522,9 @@ "TagDeclarator": { "type": "object", "required": [ - "end", - "start", "value" ], "properties": { - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, "value": { "type": "string" }, @@ -88684,6 +88538,16 @@ "maxItems": 32, "minItems": 32, "nullable": true + }, + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 } } }, @@ -90009,8 +89873,6 @@ { "type": "object", "required": [ - "end", - "start", "type", "value" ], @@ -90021,16 +89883,6 @@ "TagDeclarator" ] }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, "value": { "type": "string" }, @@ -90044,6 +89896,16 @@ "maxItems": 32, "minItems": 32, "nullable": true + }, + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 } } }, @@ -90945,21 +90807,9 @@ "TagDeclarator": { "type": "object", "required": [ - "end", - "start", "value" ], "properties": { - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, "value": { "type": "string" }, @@ -90973,6 +90823,16 @@ "maxItems": 32, "minItems": 32, "nullable": true + }, + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 } } }, @@ -91650,21 +91510,9 @@ "type": "object", "required": [ "body", - "end", - "params", - "start" + "params" ], "properties": { - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, "params": { "type": "array", "items": { @@ -91684,6 +91532,16 @@ "maxItems": 32, "minItems": 32, "nullable": true + }, + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 } } }, @@ -91723,21 +91581,9 @@ "Identifier": { "type": "object", "required": [ - "end", - "name", - "start" + "name" ], "properties": { - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, "name": { "type": "string" }, @@ -91751,18 +91597,7 @@ "maxItems": 32, "minItems": 32, "nullable": true - } - } - }, - "Program": { - "description": "A KCL program top level, or function body.", - "type": "object", - "required": [ - "body", - "end", - "start" - ], - "properties": { + }, "start": { "type": "integer", "format": "uint", @@ -91772,7 +91607,16 @@ "type": "integer", "format": "uint", "minimum": 0.0 - }, + } + } + }, + "Program": { + "description": "A KCL program top level, or function body.", + "type": "object", + "required": [ + "body" + ], + "properties": { "body": { "type": "array", "items": { @@ -91792,6 +91636,16 @@ "maxItems": 32, "minItems": 32, "nullable": true + }, + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 } } }, @@ -91800,11 +91654,9 @@ { "type": "object", "required": [ - "end", "items", "path", "raw_path", - "start", "type" ], "properties": { @@ -91814,16 +91666,6 @@ "ImportStatement" ] }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, "items": { "type": "array", "items": { @@ -91846,23 +91688,6 @@ "maxItems": 32, "minItems": 32, "nullable": true - } - } - }, - { - "type": "object", - "required": [ - "end", - "expression", - "start", - "type" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "ExpressionStatement" - ] }, "start": { "type": "integer", @@ -91873,6 +91698,21 @@ "type": "integer", "format": "uint", "minimum": 0.0 + } + } + }, + { + "type": "object", + "required": [ + "expression", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "ExpressionStatement" + ] }, "expression": { "$ref": "#/components/schemas/Expr" @@ -91887,24 +91727,6 @@ "maxItems": 32, "minItems": 32, "nullable": true - } - } - }, - { - "type": "object", - "required": [ - "declarations", - "end", - "kind", - "start", - "type" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "VariableDeclaration" - ] }, "start": { "type": "integer", @@ -91915,6 +91737,22 @@ "type": "integer", "format": "uint", "minimum": 0.0 + } + } + }, + { + "type": "object", + "required": [ + "declarations", + "kind", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "VariableDeclaration" + ] }, "declarations": { "type": "array", @@ -91938,23 +91776,6 @@ "maxItems": 32, "minItems": 32, "nullable": true - } - } - }, - { - "type": "object", - "required": [ - "argument", - "end", - "start", - "type" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "ReturnStatement" - ] }, "start": { "type": "integer", @@ -91965,6 +91786,21 @@ "type": "integer", "format": "uint", "minimum": 0.0 + } + } + }, + { + "type": "object", + "required": [ + "argument", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "ReturnStatement" + ] }, "argument": { "$ref": "#/components/schemas/Expr" @@ -91979,6 +91815,16 @@ "maxItems": 32, "minItems": 32, "nullable": true + }, + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 } } } @@ -91987,9 +91833,7 @@ "ImportItem": { "type": "object", "required": [ - "end", - "name", - "start" + "name" ], "properties": { "name": { @@ -92009,16 +91853,6 @@ ], "nullable": true }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, "digest": { "type": "array", "items": { @@ -92029,6 +91863,16 @@ "maxItems": 32, "minItems": 32, "nullable": true + }, + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 } } }, @@ -92038,9 +91882,7 @@ { "type": "object", "required": [ - "end", "raw", - "start", "type", "value" ], @@ -92051,16 +91893,6 @@ "Literal" ] }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, "value": { "$ref": "#/components/schemas/LiteralValue" }, @@ -92077,23 +91909,6 @@ "maxItems": 32, "minItems": 32, "nullable": true - } - } - }, - { - "type": "object", - "required": [ - "end", - "name", - "start", - "type" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "Identifier" - ] }, "start": { "type": "integer", @@ -92104,6 +91919,21 @@ "type": "integer", "format": "uint", "minimum": 0.0 + } + } + }, + { + "type": "object", + "required": [ + "name", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Identifier" + ] }, "name": { "type": "string" @@ -92118,23 +91948,6 @@ "maxItems": 32, "minItems": 32, "nullable": true - } - } - }, - { - "type": "object", - "required": [ - "end", - "start", - "type", - "value" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "TagDeclarator" - ] }, "start": { "type": "integer", @@ -92145,6 +91958,21 @@ "type": "integer", "format": "uint", "minimum": 0.0 + } + } + }, + { + "type": "object", + "required": [ + "type", + "value" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "TagDeclarator" + ] }, "value": { "type": "string" @@ -92159,25 +91987,6 @@ "maxItems": 32, "minItems": 32, "nullable": true - } - } - }, - { - "type": "object", - "required": [ - "end", - "left", - "operator", - "right", - "start", - "type" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "BinaryExpression" - ] }, "start": { "type": "integer", @@ -92188,6 +91997,23 @@ "type": "integer", "format": "uint", "minimum": 0.0 + } + } + }, + { + "type": "object", + "required": [ + "left", + "operator", + "right", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "BinaryExpression" + ] }, "operator": { "$ref": "#/components/schemas/BinaryOperator" @@ -92208,24 +92034,6 @@ "maxItems": 32, "minItems": 32, "nullable": true - } - } - }, - { - "type": "object", - "required": [ - "body", - "end", - "params", - "start", - "type" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "FunctionExpression" - ] }, "start": { "type": "integer", @@ -92236,6 +92044,22 @@ "type": "integer", "format": "uint", "minimum": 0.0 + } + } + }, + { + "type": "object", + "required": [ + "body", + "params", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "FunctionExpression" + ] }, "params": { "type": "array", @@ -92256,25 +92080,6 @@ "maxItems": 32, "minItems": 32, "nullable": true - } - } - }, - { - "type": "object", - "required": [ - "arguments", - "callee", - "end", - "optional", - "start", - "type" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "CallExpression" - ] }, "start": { "type": "integer", @@ -92285,6 +92090,23 @@ "type": "integer", "format": "uint", "minimum": 0.0 + } + } + }, + { + "type": "object", + "required": [ + "arguments", + "callee", + "optional", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "CallExpression" + ] }, "callee": { "$ref": "#/components/schemas/Identifier" @@ -92308,23 +92130,6 @@ "maxItems": 32, "minItems": 32, "nullable": true - } - } - }, - { - "type": "object", - "required": [ - "body", - "end", - "start", - "type" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "PipeExpression" - ] }, "start": { "type": "integer", @@ -92335,6 +92140,21 @@ "type": "integer", "format": "uint", "minimum": 0.0 + } + } + }, + { + "type": "object", + "required": [ + "body", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "PipeExpression" + ] }, "body": { "type": "array", @@ -92355,22 +92175,6 @@ "maxItems": 32, "minItems": 32, "nullable": true - } - } - }, - { - "type": "object", - "required": [ - "end", - "start", - "type" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "PipeSubstitution" - ] }, "start": { "type": "integer", @@ -92381,6 +92185,20 @@ "type": "integer", "format": "uint", "minimum": 0.0 + } + } + }, + { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "PipeSubstitution" + ] }, "digest": { "type": "array", @@ -92392,23 +92210,6 @@ "maxItems": 32, "minItems": 32, "nullable": true - } - } - }, - { - "type": "object", - "required": [ - "elements", - "end", - "start", - "type" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "ArrayExpression" - ] }, "start": { "type": "integer", @@ -92419,6 +92220,21 @@ "type": "integer", "format": "uint", "minimum": 0.0 + } + } + }, + { + "type": "object", + "required": [ + "elements", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "ArrayExpression" + ] }, "elements": { "type": "array", @@ -92439,25 +92255,6 @@ "maxItems": 32, "minItems": 32, "nullable": true - } - } - }, - { - "type": "object", - "required": [ - "end", - "endElement", - "endInclusive", - "start", - "startElement", - "type" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "ArrayRangeExpression" - ] }, "start": { "type": "integer", @@ -92468,6 +92265,23 @@ "type": "integer", "format": "uint", "minimum": 0.0 + } + } + }, + { + "type": "object", + "required": [ + "endElement", + "endInclusive", + "startElement", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "ArrayRangeExpression" + ] }, "startElement": { "$ref": "#/components/schemas/Expr" @@ -92489,23 +92303,6 @@ "maxItems": 32, "minItems": 32, "nullable": true - } - } - }, - { - "type": "object", - "required": [ - "end", - "properties", - "start", - "type" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "ObjectExpression" - ] }, "start": { "type": "integer", @@ -92516,6 +92313,21 @@ "type": "integer", "format": "uint", "minimum": 0.0 + } + } + }, + { + "type": "object", + "required": [ + "properties", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "ObjectExpression" + ] }, "properties": { "type": "array", @@ -92536,25 +92348,6 @@ "maxItems": 32, "minItems": 32, "nullable": true - } - } - }, - { - "type": "object", - "required": [ - "computed", - "end", - "object", - "property", - "start", - "type" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "MemberExpression" - ] }, "start": { "type": "integer", @@ -92565,6 +92358,23 @@ "type": "integer", "format": "uint", "minimum": 0.0 + } + } + }, + { + "type": "object", + "required": [ + "computed", + "object", + "property", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "MemberExpression" + ] }, "object": { "$ref": "#/components/schemas/MemberObject" @@ -92585,24 +92395,6 @@ "maxItems": 32, "minItems": 32, "nullable": true - } - } - }, - { - "type": "object", - "required": [ - "argument", - "end", - "operator", - "start", - "type" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "UnaryExpression" - ] }, "start": { "type": "integer", @@ -92613,6 +92405,22 @@ "type": "integer", "format": "uint", "minimum": 0.0 + } + } + }, + { + "type": "object", + "required": [ + "argument", + "operator", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "UnaryExpression" + ] }, "operator": { "$ref": "#/components/schemas/UnaryOperator" @@ -92630,26 +92438,6 @@ "maxItems": 32, "minItems": 32, "nullable": true - } - } - }, - { - "type": "object", - "required": [ - "cond", - "else_ifs", - "end", - "final_else", - "start", - "then_val", - "type" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "IfExpression" - ] }, "start": { "type": "integer", @@ -92660,6 +92448,24 @@ "type": "integer", "format": "uint", "minimum": 0.0 + } + } + }, + { + "type": "object", + "required": [ + "cond", + "else_ifs", + "final_else", + "then_val", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "IfExpression" + ] }, "cond": { "$ref": "#/components/schemas/Expr" @@ -92686,6 +92492,16 @@ "maxItems": 32, "minItems": 32, "nullable": true + }, + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 } } }, @@ -92829,9 +92645,7 @@ { "type": "object", "required": [ - "end", "raw", - "start", "type", "value" ], @@ -92842,16 +92656,6 @@ "Literal" ] }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, "value": { "$ref": "#/components/schemas/LiteralValue" }, @@ -92868,23 +92672,6 @@ "maxItems": 32, "minItems": 32, "nullable": true - } - } - }, - { - "type": "object", - "required": [ - "end", - "name", - "start", - "type" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "Identifier" - ] }, "start": { "type": "integer", @@ -92895,6 +92682,21 @@ "type": "integer", "format": "uint", "minimum": 0.0 + } + } + }, + { + "type": "object", + "required": [ + "name", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Identifier" + ] }, "name": { "type": "string" @@ -92909,25 +92711,6 @@ "maxItems": 32, "minItems": 32, "nullable": true - } - } - }, - { - "type": "object", - "required": [ - "end", - "left", - "operator", - "right", - "start", - "type" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "BinaryExpression" - ] }, "start": { "type": "integer", @@ -92938,6 +92721,23 @@ "type": "integer", "format": "uint", "minimum": 0.0 + } + } + }, + { + "type": "object", + "required": [ + "left", + "operator", + "right", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "BinaryExpression" + ] }, "operator": { "$ref": "#/components/schemas/BinaryOperator" @@ -92958,25 +92758,6 @@ "maxItems": 32, "minItems": 32, "nullable": true - } - } - }, - { - "type": "object", - "required": [ - "arguments", - "callee", - "end", - "optional", - "start", - "type" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "CallExpression" - ] }, "start": { "type": "integer", @@ -92987,6 +92768,23 @@ "type": "integer", "format": "uint", "minimum": 0.0 + } + } + }, + { + "type": "object", + "required": [ + "arguments", + "callee", + "optional", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "CallExpression" + ] }, "callee": { "$ref": "#/components/schemas/Identifier" @@ -93010,24 +92808,6 @@ "maxItems": 32, "minItems": 32, "nullable": true - } - } - }, - { - "type": "object", - "required": [ - "argument", - "end", - "operator", - "start", - "type" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "UnaryExpression" - ] }, "start": { "type": "integer", @@ -93038,6 +92818,22 @@ "type": "integer", "format": "uint", "minimum": 0.0 + } + } + }, + { + "type": "object", + "required": [ + "argument", + "operator", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "UnaryExpression" + ] }, "operator": { "$ref": "#/components/schemas/UnaryOperator" @@ -93055,25 +92851,6 @@ "maxItems": 32, "minItems": 32, "nullable": true - } - } - }, - { - "type": "object", - "required": [ - "computed", - "end", - "object", - "property", - "start", - "type" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "MemberExpression" - ] }, "start": { "type": "integer", @@ -93084,6 +92861,23 @@ "type": "integer", "format": "uint", "minimum": 0.0 + } + } + }, + { + "type": "object", + "required": [ + "computed", + "object", + "property", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "MemberExpression" + ] }, "object": { "$ref": "#/components/schemas/MemberObject" @@ -93104,26 +92898,6 @@ "maxItems": 32, "minItems": 32, "nullable": true - } - } - }, - { - "type": "object", - "required": [ - "cond", - "else_ifs", - "end", - "final_else", - "start", - "then_val", - "type" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "IfExpression" - ] }, "start": { "type": "integer", @@ -93134,6 +92908,24 @@ "type": "integer", "format": "uint", "minimum": 0.0 + } + } + }, + { + "type": "object", + "required": [ + "cond", + "else_ifs", + "final_else", + "then_val", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "IfExpression" + ] }, "cond": { "$ref": "#/components/schemas/Expr" @@ -93160,6 +92952,16 @@ "maxItems": 32, "minItems": 32, "nullable": true + }, + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 } } } @@ -93189,10 +92991,8 @@ "type": "object", "required": [ "computed", - "end", "object", "property", - "start", "type" ], "properties": { @@ -93202,16 +93002,6 @@ "MemberExpression" ] }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, "object": { "$ref": "#/components/schemas/MemberObject" }, @@ -93231,23 +93021,6 @@ "maxItems": 32, "minItems": 32, "nullable": true - } - } - }, - { - "type": "object", - "required": [ - "end", - "name", - "start", - "type" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "Identifier" - ] }, "start": { "type": "integer", @@ -93258,6 +93031,21 @@ "type": "integer", "format": "uint", "minimum": 0.0 + } + } + }, + { + "type": "object", + "required": [ + "name", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Identifier" + ] }, "name": { "type": "string" @@ -93272,6 +93060,16 @@ "maxItems": 32, "minItems": 32, "nullable": true + }, + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 } } } @@ -93282,9 +93080,7 @@ { "type": "object", "required": [ - "end", "name", - "start", "type" ], "properties": { @@ -93294,16 +93090,6 @@ "Identifier" ] }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, "name": { "type": "string" }, @@ -93317,24 +93103,6 @@ "maxItems": 32, "minItems": 32, "nullable": true - } - } - }, - { - "type": "object", - "required": [ - "end", - "raw", - "start", - "type", - "value" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "Literal" - ] }, "start": { "type": "integer", @@ -93345,6 +93113,22 @@ "type": "integer", "format": "uint", "minimum": 0.0 + } + } + }, + { + "type": "object", + "required": [ + "raw", + "type", + "value" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Literal" + ] }, "value": { "$ref": "#/components/schemas/LiteralValue" @@ -93362,6 +93146,16 @@ "maxItems": 32, "minItems": 32, "nullable": true + }, + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 } } } @@ -93371,21 +93165,9 @@ "type": "object", "required": [ "cond", - "end", - "start", "then_val" ], "properties": { - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, "cond": { "$ref": "#/components/schemas/Expr" }, @@ -93402,6 +93184,16 @@ "maxItems": 32, "minItems": 32, "nullable": true + }, + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 } } }, @@ -93409,7 +93201,7 @@ "type": "object", "required": [ "nonCodeNodes", - "start" + "startNodes" ], "properties": { "nonCodeNodes": { @@ -93421,7 +93213,7 @@ } } }, - "start": { + "startNodes": { "type": "array", "items": { "$ref": "#/components/schemas/NonCodeNode" @@ -93443,21 +93235,9 @@ "NonCodeNode": { "type": "object", "required": [ - "end", - "start", "value" ], "properties": { - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, "value": { "$ref": "#/components/schemas/NonCodeValue" }, @@ -93471,6 +93251,16 @@ "maxItems": 32, "minItems": 32, "nullable": true + }, + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 } } }, @@ -93601,22 +93391,10 @@ "ObjectProperty": { "type": "object", "required": [ - "end", "key", - "start", "value" ], "properties": { - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, "key": { "$ref": "#/components/schemas/Identifier" }, @@ -93633,18 +93411,7 @@ "maxItems": 32, "minItems": 32, "nullable": true - } - } - }, - "VariableDeclarator": { - "type": "object", - "required": [ - "end", - "id", - "init", - "start" - ], - "properties": { + }, "start": { "type": "integer", "format": "uint", @@ -93654,7 +93421,16 @@ "type": "integer", "format": "uint", "minimum": 0.0 - }, + } + } + }, + "VariableDeclarator": { + "type": "object", + "required": [ + "id", + "init" + ], + "properties": { "id": { "description": "The identifier of the variable.", "allOf": [ @@ -93681,6 +93457,16 @@ "maxItems": 32, "minItems": 32, "nullable": true + }, + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 } } }, @@ -93723,7 +93509,9 @@ } }, "currentEnv": { - "$ref": "#/components/schemas/EnvironmentRef" + "type": "integer", + "format": "uint", + "minimum": 0.0 }, "return": { "allOf": [ @@ -93748,20 +93536,12 @@ } }, "parent": { - "allOf": [ - { - "$ref": "#/components/schemas/EnvironmentRef" - } - ], + "type": "integer", + "format": "uint", + "minimum": 0.0, "nullable": true } } - }, - "EnvironmentRef": { - "description": "An index pointing to an environment.", - "type": "integer", - "format": "uint", - "minimum": 0.0 } } }, @@ -93837,8 +93617,6 @@ { "type": "object", "required": [ - "end", - "start", "type", "value" ], @@ -93849,16 +93627,6 @@ "TagDeclarator" ] }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, "value": { "type": "string" }, @@ -93872,6 +93640,16 @@ "maxItems": 32, "minItems": 32, "nullable": true + }, + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 } } }, @@ -94773,21 +94551,9 @@ "TagDeclarator": { "type": "object", "required": [ - "end", - "start", "value" ], "properties": { - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, "value": { "type": "string" }, @@ -94801,6 +94567,16 @@ "maxItems": 32, "minItems": 32, "nullable": true + }, + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 } } }, @@ -95478,21 +95254,9 @@ "type": "object", "required": [ "body", - "end", - "params", - "start" + "params" ], "properties": { - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, "params": { "type": "array", "items": { @@ -95512,6 +95276,16 @@ "maxItems": 32, "minItems": 32, "nullable": true + }, + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 } } }, @@ -95551,21 +95325,9 @@ "Identifier": { "type": "object", "required": [ - "end", - "name", - "start" + "name" ], "properties": { - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, "name": { "type": "string" }, @@ -95579,18 +95341,7 @@ "maxItems": 32, "minItems": 32, "nullable": true - } - } - }, - "Program": { - "description": "A KCL program top level, or function body.", - "type": "object", - "required": [ - "body", - "end", - "start" - ], - "properties": { + }, "start": { "type": "integer", "format": "uint", @@ -95600,7 +95351,16 @@ "type": "integer", "format": "uint", "minimum": 0.0 - }, + } + } + }, + "Program": { + "description": "A KCL program top level, or function body.", + "type": "object", + "required": [ + "body" + ], + "properties": { "body": { "type": "array", "items": { @@ -95620,6 +95380,16 @@ "maxItems": 32, "minItems": 32, "nullable": true + }, + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 } } }, @@ -95628,11 +95398,9 @@ { "type": "object", "required": [ - "end", "items", "path", "raw_path", - "start", "type" ], "properties": { @@ -95642,16 +95410,6 @@ "ImportStatement" ] }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, "items": { "type": "array", "items": { @@ -95674,23 +95432,6 @@ "maxItems": 32, "minItems": 32, "nullable": true - } - } - }, - { - "type": "object", - "required": [ - "end", - "expression", - "start", - "type" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "ExpressionStatement" - ] }, "start": { "type": "integer", @@ -95701,6 +95442,21 @@ "type": "integer", "format": "uint", "minimum": 0.0 + } + } + }, + { + "type": "object", + "required": [ + "expression", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "ExpressionStatement" + ] }, "expression": { "$ref": "#/components/schemas/Expr" @@ -95715,24 +95471,6 @@ "maxItems": 32, "minItems": 32, "nullable": true - } - } - }, - { - "type": "object", - "required": [ - "declarations", - "end", - "kind", - "start", - "type" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "VariableDeclaration" - ] }, "start": { "type": "integer", @@ -95743,6 +95481,22 @@ "type": "integer", "format": "uint", "minimum": 0.0 + } + } + }, + { + "type": "object", + "required": [ + "declarations", + "kind", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "VariableDeclaration" + ] }, "declarations": { "type": "array", @@ -95766,23 +95520,6 @@ "maxItems": 32, "minItems": 32, "nullable": true - } - } - }, - { - "type": "object", - "required": [ - "argument", - "end", - "start", - "type" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "ReturnStatement" - ] }, "start": { "type": "integer", @@ -95793,6 +95530,21 @@ "type": "integer", "format": "uint", "minimum": 0.0 + } + } + }, + { + "type": "object", + "required": [ + "argument", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "ReturnStatement" + ] }, "argument": { "$ref": "#/components/schemas/Expr" @@ -95807,6 +95559,16 @@ "maxItems": 32, "minItems": 32, "nullable": true + }, + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 } } } @@ -95815,9 +95577,7 @@ "ImportItem": { "type": "object", "required": [ - "end", - "name", - "start" + "name" ], "properties": { "name": { @@ -95837,16 +95597,6 @@ ], "nullable": true }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, "digest": { "type": "array", "items": { @@ -95857,6 +95607,16 @@ "maxItems": 32, "minItems": 32, "nullable": true + }, + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 } } }, @@ -95866,9 +95626,7 @@ { "type": "object", "required": [ - "end", "raw", - "start", "type", "value" ], @@ -95879,16 +95637,6 @@ "Literal" ] }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, "value": { "$ref": "#/components/schemas/LiteralValue" }, @@ -95905,23 +95653,6 @@ "maxItems": 32, "minItems": 32, "nullable": true - } - } - }, - { - "type": "object", - "required": [ - "end", - "name", - "start", - "type" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "Identifier" - ] }, "start": { "type": "integer", @@ -95932,6 +95663,21 @@ "type": "integer", "format": "uint", "minimum": 0.0 + } + } + }, + { + "type": "object", + "required": [ + "name", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Identifier" + ] }, "name": { "type": "string" @@ -95946,23 +95692,6 @@ "maxItems": 32, "minItems": 32, "nullable": true - } - } - }, - { - "type": "object", - "required": [ - "end", - "start", - "type", - "value" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "TagDeclarator" - ] }, "start": { "type": "integer", @@ -95973,6 +95702,21 @@ "type": "integer", "format": "uint", "minimum": 0.0 + } + } + }, + { + "type": "object", + "required": [ + "type", + "value" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "TagDeclarator" + ] }, "value": { "type": "string" @@ -95987,25 +95731,6 @@ "maxItems": 32, "minItems": 32, "nullable": true - } - } - }, - { - "type": "object", - "required": [ - "end", - "left", - "operator", - "right", - "start", - "type" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "BinaryExpression" - ] }, "start": { "type": "integer", @@ -96016,6 +95741,23 @@ "type": "integer", "format": "uint", "minimum": 0.0 + } + } + }, + { + "type": "object", + "required": [ + "left", + "operator", + "right", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "BinaryExpression" + ] }, "operator": { "$ref": "#/components/schemas/BinaryOperator" @@ -96036,24 +95778,6 @@ "maxItems": 32, "minItems": 32, "nullable": true - } - } - }, - { - "type": "object", - "required": [ - "body", - "end", - "params", - "start", - "type" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "FunctionExpression" - ] }, "start": { "type": "integer", @@ -96064,6 +95788,22 @@ "type": "integer", "format": "uint", "minimum": 0.0 + } + } + }, + { + "type": "object", + "required": [ + "body", + "params", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "FunctionExpression" + ] }, "params": { "type": "array", @@ -96084,25 +95824,6 @@ "maxItems": 32, "minItems": 32, "nullable": true - } - } - }, - { - "type": "object", - "required": [ - "arguments", - "callee", - "end", - "optional", - "start", - "type" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "CallExpression" - ] }, "start": { "type": "integer", @@ -96113,6 +95834,23 @@ "type": "integer", "format": "uint", "minimum": 0.0 + } + } + }, + { + "type": "object", + "required": [ + "arguments", + "callee", + "optional", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "CallExpression" + ] }, "callee": { "$ref": "#/components/schemas/Identifier" @@ -96136,23 +95874,6 @@ "maxItems": 32, "minItems": 32, "nullable": true - } - } - }, - { - "type": "object", - "required": [ - "body", - "end", - "start", - "type" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "PipeExpression" - ] }, "start": { "type": "integer", @@ -96163,6 +95884,21 @@ "type": "integer", "format": "uint", "minimum": 0.0 + } + } + }, + { + "type": "object", + "required": [ + "body", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "PipeExpression" + ] }, "body": { "type": "array", @@ -96183,22 +95919,6 @@ "maxItems": 32, "minItems": 32, "nullable": true - } - } - }, - { - "type": "object", - "required": [ - "end", - "start", - "type" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "PipeSubstitution" - ] }, "start": { "type": "integer", @@ -96209,6 +95929,20 @@ "type": "integer", "format": "uint", "minimum": 0.0 + } + } + }, + { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "PipeSubstitution" + ] }, "digest": { "type": "array", @@ -96220,23 +95954,6 @@ "maxItems": 32, "minItems": 32, "nullable": true - } - } - }, - { - "type": "object", - "required": [ - "elements", - "end", - "start", - "type" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "ArrayExpression" - ] }, "start": { "type": "integer", @@ -96247,6 +95964,21 @@ "type": "integer", "format": "uint", "minimum": 0.0 + } + } + }, + { + "type": "object", + "required": [ + "elements", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "ArrayExpression" + ] }, "elements": { "type": "array", @@ -96267,25 +95999,6 @@ "maxItems": 32, "minItems": 32, "nullable": true - } - } - }, - { - "type": "object", - "required": [ - "end", - "endElement", - "endInclusive", - "start", - "startElement", - "type" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "ArrayRangeExpression" - ] }, "start": { "type": "integer", @@ -96296,6 +96009,23 @@ "type": "integer", "format": "uint", "minimum": 0.0 + } + } + }, + { + "type": "object", + "required": [ + "endElement", + "endInclusive", + "startElement", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "ArrayRangeExpression" + ] }, "startElement": { "$ref": "#/components/schemas/Expr" @@ -96317,23 +96047,6 @@ "maxItems": 32, "minItems": 32, "nullable": true - } - } - }, - { - "type": "object", - "required": [ - "end", - "properties", - "start", - "type" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "ObjectExpression" - ] }, "start": { "type": "integer", @@ -96344,6 +96057,21 @@ "type": "integer", "format": "uint", "minimum": 0.0 + } + } + }, + { + "type": "object", + "required": [ + "properties", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "ObjectExpression" + ] }, "properties": { "type": "array", @@ -96364,25 +96092,6 @@ "maxItems": 32, "minItems": 32, "nullable": true - } - } - }, - { - "type": "object", - "required": [ - "computed", - "end", - "object", - "property", - "start", - "type" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "MemberExpression" - ] }, "start": { "type": "integer", @@ -96393,6 +96102,23 @@ "type": "integer", "format": "uint", "minimum": 0.0 + } + } + }, + { + "type": "object", + "required": [ + "computed", + "object", + "property", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "MemberExpression" + ] }, "object": { "$ref": "#/components/schemas/MemberObject" @@ -96413,24 +96139,6 @@ "maxItems": 32, "minItems": 32, "nullable": true - } - } - }, - { - "type": "object", - "required": [ - "argument", - "end", - "operator", - "start", - "type" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "UnaryExpression" - ] }, "start": { "type": "integer", @@ -96441,6 +96149,22 @@ "type": "integer", "format": "uint", "minimum": 0.0 + } + } + }, + { + "type": "object", + "required": [ + "argument", + "operator", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "UnaryExpression" + ] }, "operator": { "$ref": "#/components/schemas/UnaryOperator" @@ -96458,26 +96182,6 @@ "maxItems": 32, "minItems": 32, "nullable": true - } - } - }, - { - "type": "object", - "required": [ - "cond", - "else_ifs", - "end", - "final_else", - "start", - "then_val", - "type" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "IfExpression" - ] }, "start": { "type": "integer", @@ -96488,6 +96192,24 @@ "type": "integer", "format": "uint", "minimum": 0.0 + } + } + }, + { + "type": "object", + "required": [ + "cond", + "else_ifs", + "final_else", + "then_val", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "IfExpression" + ] }, "cond": { "$ref": "#/components/schemas/Expr" @@ -96514,6 +96236,16 @@ "maxItems": 32, "minItems": 32, "nullable": true + }, + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 } } }, @@ -96657,9 +96389,7 @@ { "type": "object", "required": [ - "end", "raw", - "start", "type", "value" ], @@ -96670,16 +96400,6 @@ "Literal" ] }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, "value": { "$ref": "#/components/schemas/LiteralValue" }, @@ -96696,23 +96416,6 @@ "maxItems": 32, "minItems": 32, "nullable": true - } - } - }, - { - "type": "object", - "required": [ - "end", - "name", - "start", - "type" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "Identifier" - ] }, "start": { "type": "integer", @@ -96723,6 +96426,21 @@ "type": "integer", "format": "uint", "minimum": 0.0 + } + } + }, + { + "type": "object", + "required": [ + "name", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Identifier" + ] }, "name": { "type": "string" @@ -96737,25 +96455,6 @@ "maxItems": 32, "minItems": 32, "nullable": true - } - } - }, - { - "type": "object", - "required": [ - "end", - "left", - "operator", - "right", - "start", - "type" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "BinaryExpression" - ] }, "start": { "type": "integer", @@ -96766,6 +96465,23 @@ "type": "integer", "format": "uint", "minimum": 0.0 + } + } + }, + { + "type": "object", + "required": [ + "left", + "operator", + "right", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "BinaryExpression" + ] }, "operator": { "$ref": "#/components/schemas/BinaryOperator" @@ -96786,25 +96502,6 @@ "maxItems": 32, "minItems": 32, "nullable": true - } - } - }, - { - "type": "object", - "required": [ - "arguments", - "callee", - "end", - "optional", - "start", - "type" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "CallExpression" - ] }, "start": { "type": "integer", @@ -96815,6 +96512,23 @@ "type": "integer", "format": "uint", "minimum": 0.0 + } + } + }, + { + "type": "object", + "required": [ + "arguments", + "callee", + "optional", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "CallExpression" + ] }, "callee": { "$ref": "#/components/schemas/Identifier" @@ -96838,24 +96552,6 @@ "maxItems": 32, "minItems": 32, "nullable": true - } - } - }, - { - "type": "object", - "required": [ - "argument", - "end", - "operator", - "start", - "type" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "UnaryExpression" - ] }, "start": { "type": "integer", @@ -96866,6 +96562,22 @@ "type": "integer", "format": "uint", "minimum": 0.0 + } + } + }, + { + "type": "object", + "required": [ + "argument", + "operator", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "UnaryExpression" + ] }, "operator": { "$ref": "#/components/schemas/UnaryOperator" @@ -96883,25 +96595,6 @@ "maxItems": 32, "minItems": 32, "nullable": true - } - } - }, - { - "type": "object", - "required": [ - "computed", - "end", - "object", - "property", - "start", - "type" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "MemberExpression" - ] }, "start": { "type": "integer", @@ -96912,6 +96605,23 @@ "type": "integer", "format": "uint", "minimum": 0.0 + } + } + }, + { + "type": "object", + "required": [ + "computed", + "object", + "property", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "MemberExpression" + ] }, "object": { "$ref": "#/components/schemas/MemberObject" @@ -96932,26 +96642,6 @@ "maxItems": 32, "minItems": 32, "nullable": true - } - } - }, - { - "type": "object", - "required": [ - "cond", - "else_ifs", - "end", - "final_else", - "start", - "then_val", - "type" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "IfExpression" - ] }, "start": { "type": "integer", @@ -96962,6 +96652,24 @@ "type": "integer", "format": "uint", "minimum": 0.0 + } + } + }, + { + "type": "object", + "required": [ + "cond", + "else_ifs", + "final_else", + "then_val", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "IfExpression" + ] }, "cond": { "$ref": "#/components/schemas/Expr" @@ -96988,6 +96696,16 @@ "maxItems": 32, "minItems": 32, "nullable": true + }, + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 } } } @@ -97017,10 +96735,8 @@ "type": "object", "required": [ "computed", - "end", "object", "property", - "start", "type" ], "properties": { @@ -97030,16 +96746,6 @@ "MemberExpression" ] }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, "object": { "$ref": "#/components/schemas/MemberObject" }, @@ -97059,23 +96765,6 @@ "maxItems": 32, "minItems": 32, "nullable": true - } - } - }, - { - "type": "object", - "required": [ - "end", - "name", - "start", - "type" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "Identifier" - ] }, "start": { "type": "integer", @@ -97086,6 +96775,21 @@ "type": "integer", "format": "uint", "minimum": 0.0 + } + } + }, + { + "type": "object", + "required": [ + "name", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Identifier" + ] }, "name": { "type": "string" @@ -97100,6 +96804,16 @@ "maxItems": 32, "minItems": 32, "nullable": true + }, + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 } } } @@ -97110,9 +96824,7 @@ { "type": "object", "required": [ - "end", "name", - "start", "type" ], "properties": { @@ -97122,16 +96834,6 @@ "Identifier" ] }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, "name": { "type": "string" }, @@ -97145,24 +96847,6 @@ "maxItems": 32, "minItems": 32, "nullable": true - } - } - }, - { - "type": "object", - "required": [ - "end", - "raw", - "start", - "type", - "value" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "Literal" - ] }, "start": { "type": "integer", @@ -97173,6 +96857,22 @@ "type": "integer", "format": "uint", "minimum": 0.0 + } + } + }, + { + "type": "object", + "required": [ + "raw", + "type", + "value" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Literal" + ] }, "value": { "$ref": "#/components/schemas/LiteralValue" @@ -97190,6 +96890,16 @@ "maxItems": 32, "minItems": 32, "nullable": true + }, + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 } } } @@ -97199,21 +96909,9 @@ "type": "object", "required": [ "cond", - "end", - "start", "then_val" ], "properties": { - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, "cond": { "$ref": "#/components/schemas/Expr" }, @@ -97230,6 +96928,16 @@ "maxItems": 32, "minItems": 32, "nullable": true + }, + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 } } }, @@ -97237,7 +96945,7 @@ "type": "object", "required": [ "nonCodeNodes", - "start" + "startNodes" ], "properties": { "nonCodeNodes": { @@ -97249,7 +96957,7 @@ } } }, - "start": { + "startNodes": { "type": "array", "items": { "$ref": "#/components/schemas/NonCodeNode" @@ -97271,21 +96979,9 @@ "NonCodeNode": { "type": "object", "required": [ - "end", - "start", "value" ], "properties": { - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, "value": { "$ref": "#/components/schemas/NonCodeValue" }, @@ -97299,6 +96995,16 @@ "maxItems": 32, "minItems": 32, "nullable": true + }, + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 } } }, @@ -97429,22 +97135,10 @@ "ObjectProperty": { "type": "object", "required": [ - "end", "key", - "start", "value" ], "properties": { - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, "key": { "$ref": "#/components/schemas/Identifier" }, @@ -97461,18 +97155,7 @@ "maxItems": 32, "minItems": 32, "nullable": true - } - } - }, - "VariableDeclarator": { - "type": "object", - "required": [ - "end", - "id", - "init", - "start" - ], - "properties": { + }, "start": { "type": "integer", "format": "uint", @@ -97482,7 +97165,16 @@ "type": "integer", "format": "uint", "minimum": 0.0 - }, + } + } + }, + "VariableDeclarator": { + "type": "object", + "required": [ + "id", + "init" + ], + "properties": { "id": { "description": "The identifier of the variable.", "allOf": [ @@ -97509,6 +97201,16 @@ "maxItems": 32, "minItems": 32, "nullable": true + }, + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 } } }, @@ -97551,7 +97253,9 @@ } }, "currentEnv": { - "$ref": "#/components/schemas/EnvironmentRef" + "type": "integer", + "format": "uint", + "minimum": 0.0 }, "return": { "allOf": [ @@ -97576,20 +97280,12 @@ } }, "parent": { - "allOf": [ - { - "$ref": "#/components/schemas/EnvironmentRef" - } - ], + "type": "integer", + "format": "uint", + "minimum": 0.0, "nullable": true } } - }, - "EnvironmentRef": { - "description": "An index pointing to an environment.", - "type": "integer", - "format": "uint", - "minimum": 0.0 } } }, @@ -97669,8 +97365,6 @@ { "type": "object", "required": [ - "end", - "start", "type", "value" ], @@ -97681,16 +97375,6 @@ "TagDeclarator" ] }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, "value": { "type": "string" }, @@ -97704,6 +97388,16 @@ "maxItems": 32, "minItems": 32, "nullable": true + }, + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 } } }, @@ -98605,21 +98299,9 @@ "TagDeclarator": { "type": "object", "required": [ - "end", - "start", "value" ], "properties": { - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, "value": { "type": "string" }, @@ -98633,6 +98315,16 @@ "maxItems": 32, "minItems": 32, "nullable": true + }, + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 } } }, @@ -99310,21 +99002,9 @@ "type": "object", "required": [ "body", - "end", - "params", - "start" + "params" ], "properties": { - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, "params": { "type": "array", "items": { @@ -99344,6 +99024,16 @@ "maxItems": 32, "minItems": 32, "nullable": true + }, + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 } } }, @@ -99383,21 +99073,9 @@ "Identifier": { "type": "object", "required": [ - "end", - "name", - "start" + "name" ], "properties": { - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, "name": { "type": "string" }, @@ -99411,18 +99089,7 @@ "maxItems": 32, "minItems": 32, "nullable": true - } - } - }, - "Program": { - "description": "A KCL program top level, or function body.", - "type": "object", - "required": [ - "body", - "end", - "start" - ], - "properties": { + }, "start": { "type": "integer", "format": "uint", @@ -99432,7 +99099,16 @@ "type": "integer", "format": "uint", "minimum": 0.0 - }, + } + } + }, + "Program": { + "description": "A KCL program top level, or function body.", + "type": "object", + "required": [ + "body" + ], + "properties": { "body": { "type": "array", "items": { @@ -99452,6 +99128,16 @@ "maxItems": 32, "minItems": 32, "nullable": true + }, + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 } } }, @@ -99460,11 +99146,9 @@ { "type": "object", "required": [ - "end", "items", "path", "raw_path", - "start", "type" ], "properties": { @@ -99474,16 +99158,6 @@ "ImportStatement" ] }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, "items": { "type": "array", "items": { @@ -99506,23 +99180,6 @@ "maxItems": 32, "minItems": 32, "nullable": true - } - } - }, - { - "type": "object", - "required": [ - "end", - "expression", - "start", - "type" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "ExpressionStatement" - ] }, "start": { "type": "integer", @@ -99533,6 +99190,21 @@ "type": "integer", "format": "uint", "minimum": 0.0 + } + } + }, + { + "type": "object", + "required": [ + "expression", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "ExpressionStatement" + ] }, "expression": { "$ref": "#/components/schemas/Expr" @@ -99547,24 +99219,6 @@ "maxItems": 32, "minItems": 32, "nullable": true - } - } - }, - { - "type": "object", - "required": [ - "declarations", - "end", - "kind", - "start", - "type" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "VariableDeclaration" - ] }, "start": { "type": "integer", @@ -99575,6 +99229,22 @@ "type": "integer", "format": "uint", "minimum": 0.0 + } + } + }, + { + "type": "object", + "required": [ + "declarations", + "kind", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "VariableDeclaration" + ] }, "declarations": { "type": "array", @@ -99598,23 +99268,6 @@ "maxItems": 32, "minItems": 32, "nullable": true - } - } - }, - { - "type": "object", - "required": [ - "argument", - "end", - "start", - "type" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "ReturnStatement" - ] }, "start": { "type": "integer", @@ -99625,6 +99278,21 @@ "type": "integer", "format": "uint", "minimum": 0.0 + } + } + }, + { + "type": "object", + "required": [ + "argument", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "ReturnStatement" + ] }, "argument": { "$ref": "#/components/schemas/Expr" @@ -99639,6 +99307,16 @@ "maxItems": 32, "minItems": 32, "nullable": true + }, + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 } } } @@ -99647,9 +99325,7 @@ "ImportItem": { "type": "object", "required": [ - "end", - "name", - "start" + "name" ], "properties": { "name": { @@ -99669,16 +99345,6 @@ ], "nullable": true }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, "digest": { "type": "array", "items": { @@ -99689,6 +99355,16 @@ "maxItems": 32, "minItems": 32, "nullable": true + }, + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 } } }, @@ -99698,9 +99374,7 @@ { "type": "object", "required": [ - "end", "raw", - "start", "type", "value" ], @@ -99711,16 +99385,6 @@ "Literal" ] }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, "value": { "$ref": "#/components/schemas/LiteralValue" }, @@ -99737,23 +99401,6 @@ "maxItems": 32, "minItems": 32, "nullable": true - } - } - }, - { - "type": "object", - "required": [ - "end", - "name", - "start", - "type" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "Identifier" - ] }, "start": { "type": "integer", @@ -99764,6 +99411,21 @@ "type": "integer", "format": "uint", "minimum": 0.0 + } + } + }, + { + "type": "object", + "required": [ + "name", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Identifier" + ] }, "name": { "type": "string" @@ -99778,23 +99440,6 @@ "maxItems": 32, "minItems": 32, "nullable": true - } - } - }, - { - "type": "object", - "required": [ - "end", - "start", - "type", - "value" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "TagDeclarator" - ] }, "start": { "type": "integer", @@ -99805,6 +99450,21 @@ "type": "integer", "format": "uint", "minimum": 0.0 + } + } + }, + { + "type": "object", + "required": [ + "type", + "value" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "TagDeclarator" + ] }, "value": { "type": "string" @@ -99819,25 +99479,6 @@ "maxItems": 32, "minItems": 32, "nullable": true - } - } - }, - { - "type": "object", - "required": [ - "end", - "left", - "operator", - "right", - "start", - "type" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "BinaryExpression" - ] }, "start": { "type": "integer", @@ -99848,6 +99489,23 @@ "type": "integer", "format": "uint", "minimum": 0.0 + } + } + }, + { + "type": "object", + "required": [ + "left", + "operator", + "right", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "BinaryExpression" + ] }, "operator": { "$ref": "#/components/schemas/BinaryOperator" @@ -99868,24 +99526,6 @@ "maxItems": 32, "minItems": 32, "nullable": true - } - } - }, - { - "type": "object", - "required": [ - "body", - "end", - "params", - "start", - "type" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "FunctionExpression" - ] }, "start": { "type": "integer", @@ -99896,6 +99536,22 @@ "type": "integer", "format": "uint", "minimum": 0.0 + } + } + }, + { + "type": "object", + "required": [ + "body", + "params", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "FunctionExpression" + ] }, "params": { "type": "array", @@ -99916,25 +99572,6 @@ "maxItems": 32, "minItems": 32, "nullable": true - } - } - }, - { - "type": "object", - "required": [ - "arguments", - "callee", - "end", - "optional", - "start", - "type" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "CallExpression" - ] }, "start": { "type": "integer", @@ -99945,6 +99582,23 @@ "type": "integer", "format": "uint", "minimum": 0.0 + } + } + }, + { + "type": "object", + "required": [ + "arguments", + "callee", + "optional", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "CallExpression" + ] }, "callee": { "$ref": "#/components/schemas/Identifier" @@ -99968,23 +99622,6 @@ "maxItems": 32, "minItems": 32, "nullable": true - } - } - }, - { - "type": "object", - "required": [ - "body", - "end", - "start", - "type" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "PipeExpression" - ] }, "start": { "type": "integer", @@ -99995,6 +99632,21 @@ "type": "integer", "format": "uint", "minimum": 0.0 + } + } + }, + { + "type": "object", + "required": [ + "body", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "PipeExpression" + ] }, "body": { "type": "array", @@ -100015,22 +99667,6 @@ "maxItems": 32, "minItems": 32, "nullable": true - } - } - }, - { - "type": "object", - "required": [ - "end", - "start", - "type" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "PipeSubstitution" - ] }, "start": { "type": "integer", @@ -100041,6 +99677,20 @@ "type": "integer", "format": "uint", "minimum": 0.0 + } + } + }, + { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "PipeSubstitution" + ] }, "digest": { "type": "array", @@ -100052,23 +99702,6 @@ "maxItems": 32, "minItems": 32, "nullable": true - } - } - }, - { - "type": "object", - "required": [ - "elements", - "end", - "start", - "type" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "ArrayExpression" - ] }, "start": { "type": "integer", @@ -100079,6 +99712,21 @@ "type": "integer", "format": "uint", "minimum": 0.0 + } + } + }, + { + "type": "object", + "required": [ + "elements", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "ArrayExpression" + ] }, "elements": { "type": "array", @@ -100099,25 +99747,6 @@ "maxItems": 32, "minItems": 32, "nullable": true - } - } - }, - { - "type": "object", - "required": [ - "end", - "endElement", - "endInclusive", - "start", - "startElement", - "type" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "ArrayRangeExpression" - ] }, "start": { "type": "integer", @@ -100128,6 +99757,23 @@ "type": "integer", "format": "uint", "minimum": 0.0 + } + } + }, + { + "type": "object", + "required": [ + "endElement", + "endInclusive", + "startElement", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "ArrayRangeExpression" + ] }, "startElement": { "$ref": "#/components/schemas/Expr" @@ -100149,23 +99795,6 @@ "maxItems": 32, "minItems": 32, "nullable": true - } - } - }, - { - "type": "object", - "required": [ - "end", - "properties", - "start", - "type" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "ObjectExpression" - ] }, "start": { "type": "integer", @@ -100176,6 +99805,21 @@ "type": "integer", "format": "uint", "minimum": 0.0 + } + } + }, + { + "type": "object", + "required": [ + "properties", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "ObjectExpression" + ] }, "properties": { "type": "array", @@ -100196,25 +99840,6 @@ "maxItems": 32, "minItems": 32, "nullable": true - } - } - }, - { - "type": "object", - "required": [ - "computed", - "end", - "object", - "property", - "start", - "type" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "MemberExpression" - ] }, "start": { "type": "integer", @@ -100225,6 +99850,23 @@ "type": "integer", "format": "uint", "minimum": 0.0 + } + } + }, + { + "type": "object", + "required": [ + "computed", + "object", + "property", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "MemberExpression" + ] }, "object": { "$ref": "#/components/schemas/MemberObject" @@ -100245,24 +99887,6 @@ "maxItems": 32, "minItems": 32, "nullable": true - } - } - }, - { - "type": "object", - "required": [ - "argument", - "end", - "operator", - "start", - "type" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "UnaryExpression" - ] }, "start": { "type": "integer", @@ -100273,6 +99897,22 @@ "type": "integer", "format": "uint", "minimum": 0.0 + } + } + }, + { + "type": "object", + "required": [ + "argument", + "operator", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "UnaryExpression" + ] }, "operator": { "$ref": "#/components/schemas/UnaryOperator" @@ -100290,26 +99930,6 @@ "maxItems": 32, "minItems": 32, "nullable": true - } - } - }, - { - "type": "object", - "required": [ - "cond", - "else_ifs", - "end", - "final_else", - "start", - "then_val", - "type" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "IfExpression" - ] }, "start": { "type": "integer", @@ -100320,6 +99940,24 @@ "type": "integer", "format": "uint", "minimum": 0.0 + } + } + }, + { + "type": "object", + "required": [ + "cond", + "else_ifs", + "final_else", + "then_val", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "IfExpression" + ] }, "cond": { "$ref": "#/components/schemas/Expr" @@ -100346,6 +99984,16 @@ "maxItems": 32, "minItems": 32, "nullable": true + }, + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 } } }, @@ -100489,9 +100137,7 @@ { "type": "object", "required": [ - "end", "raw", - "start", "type", "value" ], @@ -100502,16 +100148,6 @@ "Literal" ] }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, "value": { "$ref": "#/components/schemas/LiteralValue" }, @@ -100528,23 +100164,6 @@ "maxItems": 32, "minItems": 32, "nullable": true - } - } - }, - { - "type": "object", - "required": [ - "end", - "name", - "start", - "type" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "Identifier" - ] }, "start": { "type": "integer", @@ -100555,6 +100174,21 @@ "type": "integer", "format": "uint", "minimum": 0.0 + } + } + }, + { + "type": "object", + "required": [ + "name", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Identifier" + ] }, "name": { "type": "string" @@ -100569,25 +100203,6 @@ "maxItems": 32, "minItems": 32, "nullable": true - } - } - }, - { - "type": "object", - "required": [ - "end", - "left", - "operator", - "right", - "start", - "type" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "BinaryExpression" - ] }, "start": { "type": "integer", @@ -100598,6 +100213,23 @@ "type": "integer", "format": "uint", "minimum": 0.0 + } + } + }, + { + "type": "object", + "required": [ + "left", + "operator", + "right", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "BinaryExpression" + ] }, "operator": { "$ref": "#/components/schemas/BinaryOperator" @@ -100618,25 +100250,6 @@ "maxItems": 32, "minItems": 32, "nullable": true - } - } - }, - { - "type": "object", - "required": [ - "arguments", - "callee", - "end", - "optional", - "start", - "type" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "CallExpression" - ] }, "start": { "type": "integer", @@ -100647,6 +100260,23 @@ "type": "integer", "format": "uint", "minimum": 0.0 + } + } + }, + { + "type": "object", + "required": [ + "arguments", + "callee", + "optional", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "CallExpression" + ] }, "callee": { "$ref": "#/components/schemas/Identifier" @@ -100670,24 +100300,6 @@ "maxItems": 32, "minItems": 32, "nullable": true - } - } - }, - { - "type": "object", - "required": [ - "argument", - "end", - "operator", - "start", - "type" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "UnaryExpression" - ] }, "start": { "type": "integer", @@ -100698,6 +100310,22 @@ "type": "integer", "format": "uint", "minimum": 0.0 + } + } + }, + { + "type": "object", + "required": [ + "argument", + "operator", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "UnaryExpression" + ] }, "operator": { "$ref": "#/components/schemas/UnaryOperator" @@ -100715,25 +100343,6 @@ "maxItems": 32, "minItems": 32, "nullable": true - } - } - }, - { - "type": "object", - "required": [ - "computed", - "end", - "object", - "property", - "start", - "type" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "MemberExpression" - ] }, "start": { "type": "integer", @@ -100744,6 +100353,23 @@ "type": "integer", "format": "uint", "minimum": 0.0 + } + } + }, + { + "type": "object", + "required": [ + "computed", + "object", + "property", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "MemberExpression" + ] }, "object": { "$ref": "#/components/schemas/MemberObject" @@ -100764,26 +100390,6 @@ "maxItems": 32, "minItems": 32, "nullable": true - } - } - }, - { - "type": "object", - "required": [ - "cond", - "else_ifs", - "end", - "final_else", - "start", - "then_val", - "type" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "IfExpression" - ] }, "start": { "type": "integer", @@ -100794,6 +100400,24 @@ "type": "integer", "format": "uint", "minimum": 0.0 + } + } + }, + { + "type": "object", + "required": [ + "cond", + "else_ifs", + "final_else", + "then_val", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "IfExpression" + ] }, "cond": { "$ref": "#/components/schemas/Expr" @@ -100820,6 +100444,16 @@ "maxItems": 32, "minItems": 32, "nullable": true + }, + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 } } } @@ -100849,10 +100483,8 @@ "type": "object", "required": [ "computed", - "end", "object", "property", - "start", "type" ], "properties": { @@ -100862,16 +100494,6 @@ "MemberExpression" ] }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, "object": { "$ref": "#/components/schemas/MemberObject" }, @@ -100891,23 +100513,6 @@ "maxItems": 32, "minItems": 32, "nullable": true - } - } - }, - { - "type": "object", - "required": [ - "end", - "name", - "start", - "type" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "Identifier" - ] }, "start": { "type": "integer", @@ -100918,6 +100523,21 @@ "type": "integer", "format": "uint", "minimum": 0.0 + } + } + }, + { + "type": "object", + "required": [ + "name", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Identifier" + ] }, "name": { "type": "string" @@ -100932,6 +100552,16 @@ "maxItems": 32, "minItems": 32, "nullable": true + }, + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 } } } @@ -100942,9 +100572,7 @@ { "type": "object", "required": [ - "end", "name", - "start", "type" ], "properties": { @@ -100954,16 +100582,6 @@ "Identifier" ] }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, "name": { "type": "string" }, @@ -100977,24 +100595,6 @@ "maxItems": 32, "minItems": 32, "nullable": true - } - } - }, - { - "type": "object", - "required": [ - "end", - "raw", - "start", - "type", - "value" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "Literal" - ] }, "start": { "type": "integer", @@ -101005,6 +100605,22 @@ "type": "integer", "format": "uint", "minimum": 0.0 + } + } + }, + { + "type": "object", + "required": [ + "raw", + "type", + "value" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Literal" + ] }, "value": { "$ref": "#/components/schemas/LiteralValue" @@ -101022,6 +100638,16 @@ "maxItems": 32, "minItems": 32, "nullable": true + }, + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 } } } @@ -101031,21 +100657,9 @@ "type": "object", "required": [ "cond", - "end", - "start", "then_val" ], "properties": { - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, "cond": { "$ref": "#/components/schemas/Expr" }, @@ -101062,6 +100676,16 @@ "maxItems": 32, "minItems": 32, "nullable": true + }, + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 } } }, @@ -101069,7 +100693,7 @@ "type": "object", "required": [ "nonCodeNodes", - "start" + "startNodes" ], "properties": { "nonCodeNodes": { @@ -101081,7 +100705,7 @@ } } }, - "start": { + "startNodes": { "type": "array", "items": { "$ref": "#/components/schemas/NonCodeNode" @@ -101103,21 +100727,9 @@ "NonCodeNode": { "type": "object", "required": [ - "end", - "start", "value" ], "properties": { - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, "value": { "$ref": "#/components/schemas/NonCodeValue" }, @@ -101131,6 +100743,16 @@ "maxItems": 32, "minItems": 32, "nullable": true + }, + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 } } }, @@ -101261,22 +100883,10 @@ "ObjectProperty": { "type": "object", "required": [ - "end", "key", - "start", "value" ], "properties": { - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, "key": { "$ref": "#/components/schemas/Identifier" }, @@ -101293,18 +100903,7 @@ "maxItems": 32, "minItems": 32, "nullable": true - } - } - }, - "VariableDeclarator": { - "type": "object", - "required": [ - "end", - "id", - "init", - "start" - ], - "properties": { + }, "start": { "type": "integer", "format": "uint", @@ -101314,7 +100913,16 @@ "type": "integer", "format": "uint", "minimum": 0.0 - }, + } + } + }, + "VariableDeclarator": { + "type": "object", + "required": [ + "id", + "init" + ], + "properties": { "id": { "description": "The identifier of the variable.", "allOf": [ @@ -101341,6 +100949,16 @@ "maxItems": 32, "minItems": 32, "nullable": true + }, + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 } } }, @@ -101383,7 +101001,9 @@ } }, "currentEnv": { - "$ref": "#/components/schemas/EnvironmentRef" + "type": "integer", + "format": "uint", + "minimum": 0.0 }, "return": { "allOf": [ @@ -101408,20 +101028,12 @@ } }, "parent": { - "allOf": [ - { - "$ref": "#/components/schemas/EnvironmentRef" - } - ], + "type": "integer", + "format": "uint", + "minimum": 0.0, "nullable": true } } - }, - "EnvironmentRef": { - "description": "An index pointing to an environment.", - "type": "integer", - "format": "uint", - "minimum": 0.0 } } }, @@ -102253,21 +101865,9 @@ "TagDeclarator": { "type": "object", "required": [ - "end", - "start", "value" ], "properties": { - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, "value": { "type": "string" }, @@ -102281,6 +101881,16 @@ "maxItems": 32, "minItems": 32, "nullable": true + }, + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 } } }, @@ -103326,21 +102936,9 @@ "TagDeclarator": { "type": "object", "required": [ - "end", - "start", "value" ], "properties": { - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, "value": { "type": "string" }, @@ -103354,6 +102952,16 @@ "maxItems": 32, "minItems": 32, "nullable": true + }, + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 } } }, @@ -104636,21 +104244,9 @@ "TagDeclarator": { "type": "object", "required": [ - "end", - "start", "value" ], "properties": { - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, "value": { "type": "string" }, @@ -104664,6 +104260,16 @@ "maxItems": 32, "minItems": 32, "nullable": true + }, + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 } } }, @@ -106290,21 +105896,9 @@ "TagDeclarator": { "type": "object", "required": [ - "end", - "start", "value" ], "properties": { - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, "value": { "type": "string" }, @@ -106318,6 +105912,16 @@ "maxItems": 32, "minItems": 32, "nullable": true + }, + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 } } }, @@ -107664,21 +107268,9 @@ "TagDeclarator": { "type": "object", "required": [ - "end", - "start", "value" ], "properties": { - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, "value": { "type": "string" }, @@ -107692,6 +107284,16 @@ "maxItems": 32, "minItems": 32, "nullable": true + }, + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 } } }, @@ -108749,21 +108351,9 @@ "TagDeclarator": { "type": "object", "required": [ - "end", - "start", "value" ], "properties": { - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, "value": { "type": "string" }, @@ -108777,6 +108367,16 @@ "maxItems": 32, "minItems": 32, "nullable": true + }, + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 } } }, @@ -110132,21 +109732,9 @@ "TagDeclarator": { "type": "object", "required": [ - "end", - "start", "value" ], "properties": { - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, "value": { "type": "string" }, @@ -110160,6 +109748,16 @@ "maxItems": 32, "minItems": 32, "nullable": true + }, + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 } } }, @@ -111881,21 +111479,9 @@ "TagDeclarator": { "type": "object", "required": [ - "end", - "start", "value" ], "properties": { - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, "value": { "type": "string" }, @@ -111909,6 +111495,16 @@ "maxItems": 32, "minItems": 32, "nullable": true + }, + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 } } }, @@ -113255,21 +112851,9 @@ "TagDeclarator": { "type": "object", "required": [ - "end", - "start", "value" ], "properties": { - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, "value": { "type": "string" }, @@ -113283,6 +112867,16 @@ "maxItems": 32, "minItems": 32, "nullable": true + }, + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 } } }, @@ -114324,21 +113918,9 @@ "TagDeclarator": { "type": "object", "required": [ - "end", - "start", "value" ], "properties": { - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, "value": { "type": "string" }, @@ -114352,6 +113934,16 @@ "maxItems": 32, "minItems": 32, "nullable": true + }, + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 } } }, @@ -115707,21 +115299,9 @@ "TagDeclarator": { "type": "object", "required": [ - "end", - "start", "value" ], "properties": { - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, "value": { "type": "string" }, @@ -115735,6 +115315,16 @@ "maxItems": 32, "minItems": 32, "nullable": true + }, + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 } } }, @@ -117085,21 +116675,9 @@ "TagDeclarator": { "type": "object", "required": [ - "end", - "start", "value" ], "properties": { - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, "value": { "type": "string" }, @@ -117113,6 +116691,16 @@ "maxItems": 32, "minItems": 32, "nullable": true + }, + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 } } }, @@ -118468,21 +118056,9 @@ "TagDeclarator": { "type": "object", "required": [ - "end", - "start", "value" ], "properties": { - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, "value": { "type": "string" }, @@ -118496,6 +118072,16 @@ "maxItems": 32, "minItems": 32, "nullable": true + }, + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 } } }, @@ -120143,21 +119729,9 @@ "TagDeclarator": { "type": "object", "required": [ - "end", - "start", "value" ], "properties": { - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, "value": { "type": "string" }, @@ -120171,6 +119745,16 @@ "maxItems": 32, "minItems": 32, "nullable": true + }, + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 } } }, @@ -120989,7 +120573,7 @@ }, { "name": "tag", - "type": "TagDeclarator", + "type": "TagNode", "schema": { "$schema": "https://spec.openapis.org/oas/3.0/schema/2019-04-02#/definitions/Schema", "title": "Nullable_TagDeclarator", @@ -121463,21 +121047,9 @@ "TagDeclarator": { "type": "object", "required": [ - "end", - "start", "value" ], "properties": { - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, "value": { "type": "string" }, @@ -121491,6 +121063,16 @@ "maxItems": 32, "minItems": 32, "nullable": true + }, + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 } } }, @@ -122905,21 +122487,9 @@ "TagDeclarator": { "type": "object", "required": [ - "end", - "start", "value" ], "properties": { - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, "value": { "type": "string" }, @@ -122933,6 +122503,16 @@ "maxItems": 32, "minItems": 32, "nullable": true + }, + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 } } }, @@ -124333,21 +123913,9 @@ "TagDeclarator": { "type": "object", "required": [ - "end", - "start", "value" ], "properties": { - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, "value": { "type": "string" }, @@ -124361,6 +123929,16 @@ "maxItems": 32, "minItems": 32, "nullable": true + }, + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 } } }, @@ -125729,21 +125307,9 @@ "TagDeclarator": { "type": "object", "required": [ - "end", - "start", "value" ], "properties": { - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, "value": { "type": "string" }, @@ -125757,6 +125323,16 @@ "maxItems": 32, "minItems": 32, "nullable": true + }, + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 } } }, @@ -127120,21 +126696,9 @@ "TagDeclarator": { "type": "object", "required": [ - "end", - "start", "value" ], "properties": { - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, "value": { "type": "string" }, @@ -127148,6 +126712,16 @@ "maxItems": 32, "minItems": 32, "nullable": true + }, + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 } } }, @@ -127987,8 +127561,6 @@ { "type": "object", "required": [ - "end", - "start", "type", "value" ], @@ -127999,16 +127571,6 @@ "TagDeclarator" ] }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, "value": { "type": "string" }, @@ -128022,6 +127584,16 @@ "maxItems": 32, "minItems": 32, "nullable": true + }, + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 } } }, @@ -128923,21 +128495,9 @@ "TagDeclarator": { "type": "object", "required": [ - "end", - "start", "value" ], "properties": { - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, "value": { "type": "string" }, @@ -128951,6 +128511,16 @@ "maxItems": 32, "minItems": 32, "nullable": true + }, + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 } } }, @@ -129628,21 +129198,9 @@ "type": "object", "required": [ "body", - "end", - "params", - "start" + "params" ], "properties": { - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, "params": { "type": "array", "items": { @@ -129662,6 +129220,16 @@ "maxItems": 32, "minItems": 32, "nullable": true + }, + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 } } }, @@ -129701,21 +129269,9 @@ "Identifier": { "type": "object", "required": [ - "end", - "name", - "start" + "name" ], "properties": { - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, "name": { "type": "string" }, @@ -129729,18 +129285,7 @@ "maxItems": 32, "minItems": 32, "nullable": true - } - } - }, - "Program": { - "description": "A KCL program top level, or function body.", - "type": "object", - "required": [ - "body", - "end", - "start" - ], - "properties": { + }, "start": { "type": "integer", "format": "uint", @@ -129750,7 +129295,16 @@ "type": "integer", "format": "uint", "minimum": 0.0 - }, + } + } + }, + "Program": { + "description": "A KCL program top level, or function body.", + "type": "object", + "required": [ + "body" + ], + "properties": { "body": { "type": "array", "items": { @@ -129770,6 +129324,16 @@ "maxItems": 32, "minItems": 32, "nullable": true + }, + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 } } }, @@ -129778,11 +129342,9 @@ { "type": "object", "required": [ - "end", "items", "path", "raw_path", - "start", "type" ], "properties": { @@ -129792,16 +129354,6 @@ "ImportStatement" ] }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, "items": { "type": "array", "items": { @@ -129824,23 +129376,6 @@ "maxItems": 32, "minItems": 32, "nullable": true - } - } - }, - { - "type": "object", - "required": [ - "end", - "expression", - "start", - "type" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "ExpressionStatement" - ] }, "start": { "type": "integer", @@ -129851,6 +129386,21 @@ "type": "integer", "format": "uint", "minimum": 0.0 + } + } + }, + { + "type": "object", + "required": [ + "expression", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "ExpressionStatement" + ] }, "expression": { "$ref": "#/components/schemas/Expr" @@ -129865,24 +129415,6 @@ "maxItems": 32, "minItems": 32, "nullable": true - } - } - }, - { - "type": "object", - "required": [ - "declarations", - "end", - "kind", - "start", - "type" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "VariableDeclaration" - ] }, "start": { "type": "integer", @@ -129893,6 +129425,22 @@ "type": "integer", "format": "uint", "minimum": 0.0 + } + } + }, + { + "type": "object", + "required": [ + "declarations", + "kind", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "VariableDeclaration" + ] }, "declarations": { "type": "array", @@ -129916,23 +129464,6 @@ "maxItems": 32, "minItems": 32, "nullable": true - } - } - }, - { - "type": "object", - "required": [ - "argument", - "end", - "start", - "type" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "ReturnStatement" - ] }, "start": { "type": "integer", @@ -129943,6 +129474,21 @@ "type": "integer", "format": "uint", "minimum": 0.0 + } + } + }, + { + "type": "object", + "required": [ + "argument", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "ReturnStatement" + ] }, "argument": { "$ref": "#/components/schemas/Expr" @@ -129957,6 +129503,16 @@ "maxItems": 32, "minItems": 32, "nullable": true + }, + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 } } } @@ -129965,9 +129521,7 @@ "ImportItem": { "type": "object", "required": [ - "end", - "name", - "start" + "name" ], "properties": { "name": { @@ -129987,16 +129541,6 @@ ], "nullable": true }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, "digest": { "type": "array", "items": { @@ -130007,6 +129551,16 @@ "maxItems": 32, "minItems": 32, "nullable": true + }, + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 } } }, @@ -130016,9 +129570,7 @@ { "type": "object", "required": [ - "end", "raw", - "start", "type", "value" ], @@ -130029,16 +129581,6 @@ "Literal" ] }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, "value": { "$ref": "#/components/schemas/LiteralValue" }, @@ -130055,23 +129597,6 @@ "maxItems": 32, "minItems": 32, "nullable": true - } - } - }, - { - "type": "object", - "required": [ - "end", - "name", - "start", - "type" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "Identifier" - ] }, "start": { "type": "integer", @@ -130082,6 +129607,21 @@ "type": "integer", "format": "uint", "minimum": 0.0 + } + } + }, + { + "type": "object", + "required": [ + "name", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Identifier" + ] }, "name": { "type": "string" @@ -130096,23 +129636,6 @@ "maxItems": 32, "minItems": 32, "nullable": true - } - } - }, - { - "type": "object", - "required": [ - "end", - "start", - "type", - "value" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "TagDeclarator" - ] }, "start": { "type": "integer", @@ -130123,6 +129646,21 @@ "type": "integer", "format": "uint", "minimum": 0.0 + } + } + }, + { + "type": "object", + "required": [ + "type", + "value" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "TagDeclarator" + ] }, "value": { "type": "string" @@ -130137,25 +129675,6 @@ "maxItems": 32, "minItems": 32, "nullable": true - } - } - }, - { - "type": "object", - "required": [ - "end", - "left", - "operator", - "right", - "start", - "type" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "BinaryExpression" - ] }, "start": { "type": "integer", @@ -130166,6 +129685,23 @@ "type": "integer", "format": "uint", "minimum": 0.0 + } + } + }, + { + "type": "object", + "required": [ + "left", + "operator", + "right", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "BinaryExpression" + ] }, "operator": { "$ref": "#/components/schemas/BinaryOperator" @@ -130186,24 +129722,6 @@ "maxItems": 32, "minItems": 32, "nullable": true - } - } - }, - { - "type": "object", - "required": [ - "body", - "end", - "params", - "start", - "type" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "FunctionExpression" - ] }, "start": { "type": "integer", @@ -130214,6 +129732,22 @@ "type": "integer", "format": "uint", "minimum": 0.0 + } + } + }, + { + "type": "object", + "required": [ + "body", + "params", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "FunctionExpression" + ] }, "params": { "type": "array", @@ -130234,25 +129768,6 @@ "maxItems": 32, "minItems": 32, "nullable": true - } - } - }, - { - "type": "object", - "required": [ - "arguments", - "callee", - "end", - "optional", - "start", - "type" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "CallExpression" - ] }, "start": { "type": "integer", @@ -130263,6 +129778,23 @@ "type": "integer", "format": "uint", "minimum": 0.0 + } + } + }, + { + "type": "object", + "required": [ + "arguments", + "callee", + "optional", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "CallExpression" + ] }, "callee": { "$ref": "#/components/schemas/Identifier" @@ -130286,23 +129818,6 @@ "maxItems": 32, "minItems": 32, "nullable": true - } - } - }, - { - "type": "object", - "required": [ - "body", - "end", - "start", - "type" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "PipeExpression" - ] }, "start": { "type": "integer", @@ -130313,6 +129828,21 @@ "type": "integer", "format": "uint", "minimum": 0.0 + } + } + }, + { + "type": "object", + "required": [ + "body", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "PipeExpression" + ] }, "body": { "type": "array", @@ -130333,22 +129863,6 @@ "maxItems": 32, "minItems": 32, "nullable": true - } - } - }, - { - "type": "object", - "required": [ - "end", - "start", - "type" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "PipeSubstitution" - ] }, "start": { "type": "integer", @@ -130359,6 +129873,20 @@ "type": "integer", "format": "uint", "minimum": 0.0 + } + } + }, + { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "PipeSubstitution" + ] }, "digest": { "type": "array", @@ -130370,23 +129898,6 @@ "maxItems": 32, "minItems": 32, "nullable": true - } - } - }, - { - "type": "object", - "required": [ - "elements", - "end", - "start", - "type" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "ArrayExpression" - ] }, "start": { "type": "integer", @@ -130397,6 +129908,21 @@ "type": "integer", "format": "uint", "minimum": 0.0 + } + } + }, + { + "type": "object", + "required": [ + "elements", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "ArrayExpression" + ] }, "elements": { "type": "array", @@ -130417,25 +129943,6 @@ "maxItems": 32, "minItems": 32, "nullable": true - } - } - }, - { - "type": "object", - "required": [ - "end", - "endElement", - "endInclusive", - "start", - "startElement", - "type" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "ArrayRangeExpression" - ] }, "start": { "type": "integer", @@ -130446,6 +129953,23 @@ "type": "integer", "format": "uint", "minimum": 0.0 + } + } + }, + { + "type": "object", + "required": [ + "endElement", + "endInclusive", + "startElement", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "ArrayRangeExpression" + ] }, "startElement": { "$ref": "#/components/schemas/Expr" @@ -130467,23 +129991,6 @@ "maxItems": 32, "minItems": 32, "nullable": true - } - } - }, - { - "type": "object", - "required": [ - "end", - "properties", - "start", - "type" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "ObjectExpression" - ] }, "start": { "type": "integer", @@ -130494,6 +130001,21 @@ "type": "integer", "format": "uint", "minimum": 0.0 + } + } + }, + { + "type": "object", + "required": [ + "properties", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "ObjectExpression" + ] }, "properties": { "type": "array", @@ -130514,25 +130036,6 @@ "maxItems": 32, "minItems": 32, "nullable": true - } - } - }, - { - "type": "object", - "required": [ - "computed", - "end", - "object", - "property", - "start", - "type" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "MemberExpression" - ] }, "start": { "type": "integer", @@ -130543,6 +130046,23 @@ "type": "integer", "format": "uint", "minimum": 0.0 + } + } + }, + { + "type": "object", + "required": [ + "computed", + "object", + "property", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "MemberExpression" + ] }, "object": { "$ref": "#/components/schemas/MemberObject" @@ -130563,24 +130083,6 @@ "maxItems": 32, "minItems": 32, "nullable": true - } - } - }, - { - "type": "object", - "required": [ - "argument", - "end", - "operator", - "start", - "type" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "UnaryExpression" - ] }, "start": { "type": "integer", @@ -130591,6 +130093,22 @@ "type": "integer", "format": "uint", "minimum": 0.0 + } + } + }, + { + "type": "object", + "required": [ + "argument", + "operator", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "UnaryExpression" + ] }, "operator": { "$ref": "#/components/schemas/UnaryOperator" @@ -130608,26 +130126,6 @@ "maxItems": 32, "minItems": 32, "nullable": true - } - } - }, - { - "type": "object", - "required": [ - "cond", - "else_ifs", - "end", - "final_else", - "start", - "then_val", - "type" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "IfExpression" - ] }, "start": { "type": "integer", @@ -130638,6 +130136,24 @@ "type": "integer", "format": "uint", "minimum": 0.0 + } + } + }, + { + "type": "object", + "required": [ + "cond", + "else_ifs", + "final_else", + "then_val", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "IfExpression" + ] }, "cond": { "$ref": "#/components/schemas/Expr" @@ -130664,6 +130180,16 @@ "maxItems": 32, "minItems": 32, "nullable": true + }, + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 } } }, @@ -130807,9 +130333,7 @@ { "type": "object", "required": [ - "end", "raw", - "start", "type", "value" ], @@ -130820,16 +130344,6 @@ "Literal" ] }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, "value": { "$ref": "#/components/schemas/LiteralValue" }, @@ -130846,23 +130360,6 @@ "maxItems": 32, "minItems": 32, "nullable": true - } - } - }, - { - "type": "object", - "required": [ - "end", - "name", - "start", - "type" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "Identifier" - ] }, "start": { "type": "integer", @@ -130873,6 +130370,21 @@ "type": "integer", "format": "uint", "minimum": 0.0 + } + } + }, + { + "type": "object", + "required": [ + "name", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Identifier" + ] }, "name": { "type": "string" @@ -130887,25 +130399,6 @@ "maxItems": 32, "minItems": 32, "nullable": true - } - } - }, - { - "type": "object", - "required": [ - "end", - "left", - "operator", - "right", - "start", - "type" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "BinaryExpression" - ] }, "start": { "type": "integer", @@ -130916,6 +130409,23 @@ "type": "integer", "format": "uint", "minimum": 0.0 + } + } + }, + { + "type": "object", + "required": [ + "left", + "operator", + "right", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "BinaryExpression" + ] }, "operator": { "$ref": "#/components/schemas/BinaryOperator" @@ -130936,25 +130446,6 @@ "maxItems": 32, "minItems": 32, "nullable": true - } - } - }, - { - "type": "object", - "required": [ - "arguments", - "callee", - "end", - "optional", - "start", - "type" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "CallExpression" - ] }, "start": { "type": "integer", @@ -130965,6 +130456,23 @@ "type": "integer", "format": "uint", "minimum": 0.0 + } + } + }, + { + "type": "object", + "required": [ + "arguments", + "callee", + "optional", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "CallExpression" + ] }, "callee": { "$ref": "#/components/schemas/Identifier" @@ -130988,24 +130496,6 @@ "maxItems": 32, "minItems": 32, "nullable": true - } - } - }, - { - "type": "object", - "required": [ - "argument", - "end", - "operator", - "start", - "type" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "UnaryExpression" - ] }, "start": { "type": "integer", @@ -131016,6 +130506,22 @@ "type": "integer", "format": "uint", "minimum": 0.0 + } + } + }, + { + "type": "object", + "required": [ + "argument", + "operator", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "UnaryExpression" + ] }, "operator": { "$ref": "#/components/schemas/UnaryOperator" @@ -131033,25 +130539,6 @@ "maxItems": 32, "minItems": 32, "nullable": true - } - } - }, - { - "type": "object", - "required": [ - "computed", - "end", - "object", - "property", - "start", - "type" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "MemberExpression" - ] }, "start": { "type": "integer", @@ -131062,6 +130549,23 @@ "type": "integer", "format": "uint", "minimum": 0.0 + } + } + }, + { + "type": "object", + "required": [ + "computed", + "object", + "property", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "MemberExpression" + ] }, "object": { "$ref": "#/components/schemas/MemberObject" @@ -131082,26 +130586,6 @@ "maxItems": 32, "minItems": 32, "nullable": true - } - } - }, - { - "type": "object", - "required": [ - "cond", - "else_ifs", - "end", - "final_else", - "start", - "then_val", - "type" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "IfExpression" - ] }, "start": { "type": "integer", @@ -131112,6 +130596,24 @@ "type": "integer", "format": "uint", "minimum": 0.0 + } + } + }, + { + "type": "object", + "required": [ + "cond", + "else_ifs", + "final_else", + "then_val", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "IfExpression" + ] }, "cond": { "$ref": "#/components/schemas/Expr" @@ -131138,6 +130640,16 @@ "maxItems": 32, "minItems": 32, "nullable": true + }, + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 } } } @@ -131167,10 +130679,8 @@ "type": "object", "required": [ "computed", - "end", "object", "property", - "start", "type" ], "properties": { @@ -131180,16 +130690,6 @@ "MemberExpression" ] }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, "object": { "$ref": "#/components/schemas/MemberObject" }, @@ -131209,23 +130709,6 @@ "maxItems": 32, "minItems": 32, "nullable": true - } - } - }, - { - "type": "object", - "required": [ - "end", - "name", - "start", - "type" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "Identifier" - ] }, "start": { "type": "integer", @@ -131236,6 +130719,21 @@ "type": "integer", "format": "uint", "minimum": 0.0 + } + } + }, + { + "type": "object", + "required": [ + "name", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Identifier" + ] }, "name": { "type": "string" @@ -131250,6 +130748,16 @@ "maxItems": 32, "minItems": 32, "nullable": true + }, + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 } } } @@ -131260,9 +130768,7 @@ { "type": "object", "required": [ - "end", "name", - "start", "type" ], "properties": { @@ -131272,16 +130778,6 @@ "Identifier" ] }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, "name": { "type": "string" }, @@ -131295,24 +130791,6 @@ "maxItems": 32, "minItems": 32, "nullable": true - } - } - }, - { - "type": "object", - "required": [ - "end", - "raw", - "start", - "type", - "value" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "Literal" - ] }, "start": { "type": "integer", @@ -131323,6 +130801,22 @@ "type": "integer", "format": "uint", "minimum": 0.0 + } + } + }, + { + "type": "object", + "required": [ + "raw", + "type", + "value" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Literal" + ] }, "value": { "$ref": "#/components/schemas/LiteralValue" @@ -131340,6 +130834,16 @@ "maxItems": 32, "minItems": 32, "nullable": true + }, + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 } } } @@ -131349,21 +130853,9 @@ "type": "object", "required": [ "cond", - "end", - "start", "then_val" ], "properties": { - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, "cond": { "$ref": "#/components/schemas/Expr" }, @@ -131380,6 +130872,16 @@ "maxItems": 32, "minItems": 32, "nullable": true + }, + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 } } }, @@ -131387,7 +130889,7 @@ "type": "object", "required": [ "nonCodeNodes", - "start" + "startNodes" ], "properties": { "nonCodeNodes": { @@ -131399,7 +130901,7 @@ } } }, - "start": { + "startNodes": { "type": "array", "items": { "$ref": "#/components/schemas/NonCodeNode" @@ -131421,21 +130923,9 @@ "NonCodeNode": { "type": "object", "required": [ - "end", - "start", "value" ], "properties": { - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, "value": { "$ref": "#/components/schemas/NonCodeValue" }, @@ -131449,6 +130939,16 @@ "maxItems": 32, "minItems": 32, "nullable": true + }, + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 } } }, @@ -131579,22 +131079,10 @@ "ObjectProperty": { "type": "object", "required": [ - "end", "key", - "start", "value" ], "properties": { - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, "key": { "$ref": "#/components/schemas/Identifier" }, @@ -131611,18 +131099,7 @@ "maxItems": 32, "minItems": 32, "nullable": true - } - } - }, - "VariableDeclarator": { - "type": "object", - "required": [ - "end", - "id", - "init", - "start" - ], - "properties": { + }, "start": { "type": "integer", "format": "uint", @@ -131632,7 +131109,16 @@ "type": "integer", "format": "uint", "minimum": 0.0 - }, + } + } + }, + "VariableDeclarator": { + "type": "object", + "required": [ + "id", + "init" + ], + "properties": { "id": { "description": "The identifier of the variable.", "allOf": [ @@ -131659,6 +131145,16 @@ "maxItems": 32, "minItems": 32, "nullable": true + }, + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 } } }, @@ -131701,7 +131197,9 @@ } }, "currentEnv": { - "$ref": "#/components/schemas/EnvironmentRef" + "type": "integer", + "format": "uint", + "minimum": 0.0 }, "return": { "allOf": [ @@ -131726,20 +131224,12 @@ } }, "parent": { - "allOf": [ - { - "$ref": "#/components/schemas/EnvironmentRef" - } - ], + "type": "integer", + "format": "uint", + "minimum": 0.0, "nullable": true } } - }, - "EnvironmentRef": { - "description": "An index pointing to an environment.", - "type": "integer", - "format": "uint", - "minimum": 0.0 } } }, @@ -131812,8 +131302,6 @@ { "type": "object", "required": [ - "end", - "start", "type", "value" ], @@ -131824,16 +131312,6 @@ "TagDeclarator" ] }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, "value": { "type": "string" }, @@ -131847,6 +131325,16 @@ "maxItems": 32, "minItems": 32, "nullable": true + }, + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 } } }, @@ -132208,8 +131696,6 @@ { "type": "object", "required": [ - "end", - "start", "type", "value" ], @@ -132220,16 +131706,6 @@ "TagDeclarator" ] }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, "value": { "type": "string" }, @@ -132243,6 +131719,16 @@ "maxItems": 32, "minItems": 32, "nullable": true + }, + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 } } }, @@ -133144,21 +132630,9 @@ "TagDeclarator": { "type": "object", "required": [ - "end", - "start", "value" ], "properties": { - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, "value": { "type": "string" }, @@ -133172,6 +132646,16 @@ "maxItems": 32, "minItems": 32, "nullable": true + }, + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 } } }, @@ -133849,21 +133333,9 @@ "type": "object", "required": [ "body", - "end", - "params", - "start" + "params" ], "properties": { - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, "params": { "type": "array", "items": { @@ -133883,6 +133355,16 @@ "maxItems": 32, "minItems": 32, "nullable": true + }, + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 } } }, @@ -133922,21 +133404,9 @@ "Identifier": { "type": "object", "required": [ - "end", - "name", - "start" + "name" ], "properties": { - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, "name": { "type": "string" }, @@ -133950,18 +133420,7 @@ "maxItems": 32, "minItems": 32, "nullable": true - } - } - }, - "Program": { - "description": "A KCL program top level, or function body.", - "type": "object", - "required": [ - "body", - "end", - "start" - ], - "properties": { + }, "start": { "type": "integer", "format": "uint", @@ -133971,7 +133430,16 @@ "type": "integer", "format": "uint", "minimum": 0.0 - }, + } + } + }, + "Program": { + "description": "A KCL program top level, or function body.", + "type": "object", + "required": [ + "body" + ], + "properties": { "body": { "type": "array", "items": { @@ -133991,6 +133459,16 @@ "maxItems": 32, "minItems": 32, "nullable": true + }, + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 } } }, @@ -133999,11 +133477,9 @@ { "type": "object", "required": [ - "end", "items", "path", "raw_path", - "start", "type" ], "properties": { @@ -134013,16 +133489,6 @@ "ImportStatement" ] }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, "items": { "type": "array", "items": { @@ -134045,23 +133511,6 @@ "maxItems": 32, "minItems": 32, "nullable": true - } - } - }, - { - "type": "object", - "required": [ - "end", - "expression", - "start", - "type" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "ExpressionStatement" - ] }, "start": { "type": "integer", @@ -134072,6 +133521,21 @@ "type": "integer", "format": "uint", "minimum": 0.0 + } + } + }, + { + "type": "object", + "required": [ + "expression", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "ExpressionStatement" + ] }, "expression": { "$ref": "#/components/schemas/Expr" @@ -134086,24 +133550,6 @@ "maxItems": 32, "minItems": 32, "nullable": true - } - } - }, - { - "type": "object", - "required": [ - "declarations", - "end", - "kind", - "start", - "type" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "VariableDeclaration" - ] }, "start": { "type": "integer", @@ -134114,6 +133560,22 @@ "type": "integer", "format": "uint", "minimum": 0.0 + } + } + }, + { + "type": "object", + "required": [ + "declarations", + "kind", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "VariableDeclaration" + ] }, "declarations": { "type": "array", @@ -134137,23 +133599,6 @@ "maxItems": 32, "minItems": 32, "nullable": true - } - } - }, - { - "type": "object", - "required": [ - "argument", - "end", - "start", - "type" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "ReturnStatement" - ] }, "start": { "type": "integer", @@ -134164,6 +133609,21 @@ "type": "integer", "format": "uint", "minimum": 0.0 + } + } + }, + { + "type": "object", + "required": [ + "argument", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "ReturnStatement" + ] }, "argument": { "$ref": "#/components/schemas/Expr" @@ -134178,6 +133638,16 @@ "maxItems": 32, "minItems": 32, "nullable": true + }, + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 } } } @@ -134186,9 +133656,7 @@ "ImportItem": { "type": "object", "required": [ - "end", - "name", - "start" + "name" ], "properties": { "name": { @@ -134208,16 +133676,6 @@ ], "nullable": true }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, "digest": { "type": "array", "items": { @@ -134228,6 +133686,16 @@ "maxItems": 32, "minItems": 32, "nullable": true + }, + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 } } }, @@ -134237,9 +133705,7 @@ { "type": "object", "required": [ - "end", "raw", - "start", "type", "value" ], @@ -134250,16 +133716,6 @@ "Literal" ] }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, "value": { "$ref": "#/components/schemas/LiteralValue" }, @@ -134276,23 +133732,6 @@ "maxItems": 32, "minItems": 32, "nullable": true - } - } - }, - { - "type": "object", - "required": [ - "end", - "name", - "start", - "type" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "Identifier" - ] }, "start": { "type": "integer", @@ -134303,6 +133742,21 @@ "type": "integer", "format": "uint", "minimum": 0.0 + } + } + }, + { + "type": "object", + "required": [ + "name", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Identifier" + ] }, "name": { "type": "string" @@ -134317,23 +133771,6 @@ "maxItems": 32, "minItems": 32, "nullable": true - } - } - }, - { - "type": "object", - "required": [ - "end", - "start", - "type", - "value" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "TagDeclarator" - ] }, "start": { "type": "integer", @@ -134344,6 +133781,21 @@ "type": "integer", "format": "uint", "minimum": 0.0 + } + } + }, + { + "type": "object", + "required": [ + "type", + "value" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "TagDeclarator" + ] }, "value": { "type": "string" @@ -134358,25 +133810,6 @@ "maxItems": 32, "minItems": 32, "nullable": true - } - } - }, - { - "type": "object", - "required": [ - "end", - "left", - "operator", - "right", - "start", - "type" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "BinaryExpression" - ] }, "start": { "type": "integer", @@ -134387,6 +133820,23 @@ "type": "integer", "format": "uint", "minimum": 0.0 + } + } + }, + { + "type": "object", + "required": [ + "left", + "operator", + "right", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "BinaryExpression" + ] }, "operator": { "$ref": "#/components/schemas/BinaryOperator" @@ -134407,24 +133857,6 @@ "maxItems": 32, "minItems": 32, "nullable": true - } - } - }, - { - "type": "object", - "required": [ - "body", - "end", - "params", - "start", - "type" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "FunctionExpression" - ] }, "start": { "type": "integer", @@ -134435,6 +133867,22 @@ "type": "integer", "format": "uint", "minimum": 0.0 + } + } + }, + { + "type": "object", + "required": [ + "body", + "params", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "FunctionExpression" + ] }, "params": { "type": "array", @@ -134455,25 +133903,6 @@ "maxItems": 32, "minItems": 32, "nullable": true - } - } - }, - { - "type": "object", - "required": [ - "arguments", - "callee", - "end", - "optional", - "start", - "type" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "CallExpression" - ] }, "start": { "type": "integer", @@ -134484,6 +133913,23 @@ "type": "integer", "format": "uint", "minimum": 0.0 + } + } + }, + { + "type": "object", + "required": [ + "arguments", + "callee", + "optional", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "CallExpression" + ] }, "callee": { "$ref": "#/components/schemas/Identifier" @@ -134507,23 +133953,6 @@ "maxItems": 32, "minItems": 32, "nullable": true - } - } - }, - { - "type": "object", - "required": [ - "body", - "end", - "start", - "type" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "PipeExpression" - ] }, "start": { "type": "integer", @@ -134534,6 +133963,21 @@ "type": "integer", "format": "uint", "minimum": 0.0 + } + } + }, + { + "type": "object", + "required": [ + "body", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "PipeExpression" + ] }, "body": { "type": "array", @@ -134554,22 +133998,6 @@ "maxItems": 32, "minItems": 32, "nullable": true - } - } - }, - { - "type": "object", - "required": [ - "end", - "start", - "type" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "PipeSubstitution" - ] }, "start": { "type": "integer", @@ -134580,6 +134008,20 @@ "type": "integer", "format": "uint", "minimum": 0.0 + } + } + }, + { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "PipeSubstitution" + ] }, "digest": { "type": "array", @@ -134591,23 +134033,6 @@ "maxItems": 32, "minItems": 32, "nullable": true - } - } - }, - { - "type": "object", - "required": [ - "elements", - "end", - "start", - "type" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "ArrayExpression" - ] }, "start": { "type": "integer", @@ -134618,6 +134043,21 @@ "type": "integer", "format": "uint", "minimum": 0.0 + } + } + }, + { + "type": "object", + "required": [ + "elements", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "ArrayExpression" + ] }, "elements": { "type": "array", @@ -134638,25 +134078,6 @@ "maxItems": 32, "minItems": 32, "nullable": true - } - } - }, - { - "type": "object", - "required": [ - "end", - "endElement", - "endInclusive", - "start", - "startElement", - "type" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "ArrayRangeExpression" - ] }, "start": { "type": "integer", @@ -134667,6 +134088,23 @@ "type": "integer", "format": "uint", "minimum": 0.0 + } + } + }, + { + "type": "object", + "required": [ + "endElement", + "endInclusive", + "startElement", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "ArrayRangeExpression" + ] }, "startElement": { "$ref": "#/components/schemas/Expr" @@ -134688,23 +134126,6 @@ "maxItems": 32, "minItems": 32, "nullable": true - } - } - }, - { - "type": "object", - "required": [ - "end", - "properties", - "start", - "type" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "ObjectExpression" - ] }, "start": { "type": "integer", @@ -134715,6 +134136,21 @@ "type": "integer", "format": "uint", "minimum": 0.0 + } + } + }, + { + "type": "object", + "required": [ + "properties", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "ObjectExpression" + ] }, "properties": { "type": "array", @@ -134735,25 +134171,6 @@ "maxItems": 32, "minItems": 32, "nullable": true - } - } - }, - { - "type": "object", - "required": [ - "computed", - "end", - "object", - "property", - "start", - "type" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "MemberExpression" - ] }, "start": { "type": "integer", @@ -134764,6 +134181,23 @@ "type": "integer", "format": "uint", "minimum": 0.0 + } + } + }, + { + "type": "object", + "required": [ + "computed", + "object", + "property", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "MemberExpression" + ] }, "object": { "$ref": "#/components/schemas/MemberObject" @@ -134784,24 +134218,6 @@ "maxItems": 32, "minItems": 32, "nullable": true - } - } - }, - { - "type": "object", - "required": [ - "argument", - "end", - "operator", - "start", - "type" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "UnaryExpression" - ] }, "start": { "type": "integer", @@ -134812,6 +134228,22 @@ "type": "integer", "format": "uint", "minimum": 0.0 + } + } + }, + { + "type": "object", + "required": [ + "argument", + "operator", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "UnaryExpression" + ] }, "operator": { "$ref": "#/components/schemas/UnaryOperator" @@ -134829,26 +134261,6 @@ "maxItems": 32, "minItems": 32, "nullable": true - } - } - }, - { - "type": "object", - "required": [ - "cond", - "else_ifs", - "end", - "final_else", - "start", - "then_val", - "type" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "IfExpression" - ] }, "start": { "type": "integer", @@ -134859,6 +134271,24 @@ "type": "integer", "format": "uint", "minimum": 0.0 + } + } + }, + { + "type": "object", + "required": [ + "cond", + "else_ifs", + "final_else", + "then_val", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "IfExpression" + ] }, "cond": { "$ref": "#/components/schemas/Expr" @@ -134885,6 +134315,16 @@ "maxItems": 32, "minItems": 32, "nullable": true + }, + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 } } }, @@ -135028,9 +134468,7 @@ { "type": "object", "required": [ - "end", "raw", - "start", "type", "value" ], @@ -135041,16 +134479,6 @@ "Literal" ] }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, "value": { "$ref": "#/components/schemas/LiteralValue" }, @@ -135067,23 +134495,6 @@ "maxItems": 32, "minItems": 32, "nullable": true - } - } - }, - { - "type": "object", - "required": [ - "end", - "name", - "start", - "type" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "Identifier" - ] }, "start": { "type": "integer", @@ -135094,6 +134505,21 @@ "type": "integer", "format": "uint", "minimum": 0.0 + } + } + }, + { + "type": "object", + "required": [ + "name", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Identifier" + ] }, "name": { "type": "string" @@ -135108,25 +134534,6 @@ "maxItems": 32, "minItems": 32, "nullable": true - } - } - }, - { - "type": "object", - "required": [ - "end", - "left", - "operator", - "right", - "start", - "type" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "BinaryExpression" - ] }, "start": { "type": "integer", @@ -135137,6 +134544,23 @@ "type": "integer", "format": "uint", "minimum": 0.0 + } + } + }, + { + "type": "object", + "required": [ + "left", + "operator", + "right", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "BinaryExpression" + ] }, "operator": { "$ref": "#/components/schemas/BinaryOperator" @@ -135157,25 +134581,6 @@ "maxItems": 32, "minItems": 32, "nullable": true - } - } - }, - { - "type": "object", - "required": [ - "arguments", - "callee", - "end", - "optional", - "start", - "type" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "CallExpression" - ] }, "start": { "type": "integer", @@ -135186,6 +134591,23 @@ "type": "integer", "format": "uint", "minimum": 0.0 + } + } + }, + { + "type": "object", + "required": [ + "arguments", + "callee", + "optional", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "CallExpression" + ] }, "callee": { "$ref": "#/components/schemas/Identifier" @@ -135209,24 +134631,6 @@ "maxItems": 32, "minItems": 32, "nullable": true - } - } - }, - { - "type": "object", - "required": [ - "argument", - "end", - "operator", - "start", - "type" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "UnaryExpression" - ] }, "start": { "type": "integer", @@ -135237,6 +134641,22 @@ "type": "integer", "format": "uint", "minimum": 0.0 + } + } + }, + { + "type": "object", + "required": [ + "argument", + "operator", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "UnaryExpression" + ] }, "operator": { "$ref": "#/components/schemas/UnaryOperator" @@ -135254,25 +134674,6 @@ "maxItems": 32, "minItems": 32, "nullable": true - } - } - }, - { - "type": "object", - "required": [ - "computed", - "end", - "object", - "property", - "start", - "type" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "MemberExpression" - ] }, "start": { "type": "integer", @@ -135283,6 +134684,23 @@ "type": "integer", "format": "uint", "minimum": 0.0 + } + } + }, + { + "type": "object", + "required": [ + "computed", + "object", + "property", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "MemberExpression" + ] }, "object": { "$ref": "#/components/schemas/MemberObject" @@ -135303,26 +134721,6 @@ "maxItems": 32, "minItems": 32, "nullable": true - } - } - }, - { - "type": "object", - "required": [ - "cond", - "else_ifs", - "end", - "final_else", - "start", - "then_val", - "type" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "IfExpression" - ] }, "start": { "type": "integer", @@ -135333,6 +134731,24 @@ "type": "integer", "format": "uint", "minimum": 0.0 + } + } + }, + { + "type": "object", + "required": [ + "cond", + "else_ifs", + "final_else", + "then_val", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "IfExpression" + ] }, "cond": { "$ref": "#/components/schemas/Expr" @@ -135359,6 +134775,16 @@ "maxItems": 32, "minItems": 32, "nullable": true + }, + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 } } } @@ -135388,10 +134814,8 @@ "type": "object", "required": [ "computed", - "end", "object", "property", - "start", "type" ], "properties": { @@ -135401,16 +134825,6 @@ "MemberExpression" ] }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, "object": { "$ref": "#/components/schemas/MemberObject" }, @@ -135430,23 +134844,6 @@ "maxItems": 32, "minItems": 32, "nullable": true - } - } - }, - { - "type": "object", - "required": [ - "end", - "name", - "start", - "type" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "Identifier" - ] }, "start": { "type": "integer", @@ -135457,6 +134854,21 @@ "type": "integer", "format": "uint", "minimum": 0.0 + } + } + }, + { + "type": "object", + "required": [ + "name", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Identifier" + ] }, "name": { "type": "string" @@ -135471,6 +134883,16 @@ "maxItems": 32, "minItems": 32, "nullable": true + }, + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 } } } @@ -135481,9 +134903,7 @@ { "type": "object", "required": [ - "end", "name", - "start", "type" ], "properties": { @@ -135493,16 +134913,6 @@ "Identifier" ] }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, "name": { "type": "string" }, @@ -135516,24 +134926,6 @@ "maxItems": 32, "minItems": 32, "nullable": true - } - } - }, - { - "type": "object", - "required": [ - "end", - "raw", - "start", - "type", - "value" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "Literal" - ] }, "start": { "type": "integer", @@ -135544,6 +134936,22 @@ "type": "integer", "format": "uint", "minimum": 0.0 + } + } + }, + { + "type": "object", + "required": [ + "raw", + "type", + "value" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Literal" + ] }, "value": { "$ref": "#/components/schemas/LiteralValue" @@ -135561,6 +134969,16 @@ "maxItems": 32, "minItems": 32, "nullable": true + }, + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 } } } @@ -135570,21 +134988,9 @@ "type": "object", "required": [ "cond", - "end", - "start", "then_val" ], "properties": { - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, "cond": { "$ref": "#/components/schemas/Expr" }, @@ -135601,6 +135007,16 @@ "maxItems": 32, "minItems": 32, "nullable": true + }, + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 } } }, @@ -135608,7 +135024,7 @@ "type": "object", "required": [ "nonCodeNodes", - "start" + "startNodes" ], "properties": { "nonCodeNodes": { @@ -135620,7 +135036,7 @@ } } }, - "start": { + "startNodes": { "type": "array", "items": { "$ref": "#/components/schemas/NonCodeNode" @@ -135642,21 +135058,9 @@ "NonCodeNode": { "type": "object", "required": [ - "end", - "start", "value" ], "properties": { - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, "value": { "$ref": "#/components/schemas/NonCodeValue" }, @@ -135670,6 +135074,16 @@ "maxItems": 32, "minItems": 32, "nullable": true + }, + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 } } }, @@ -135800,22 +135214,10 @@ "ObjectProperty": { "type": "object", "required": [ - "end", "key", - "start", "value" ], "properties": { - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, "key": { "$ref": "#/components/schemas/Identifier" }, @@ -135832,18 +135234,7 @@ "maxItems": 32, "minItems": 32, "nullable": true - } - } - }, - "VariableDeclarator": { - "type": "object", - "required": [ - "end", - "id", - "init", - "start" - ], - "properties": { + }, "start": { "type": "integer", "format": "uint", @@ -135853,7 +135244,16 @@ "type": "integer", "format": "uint", "minimum": 0.0 - }, + } + } + }, + "VariableDeclarator": { + "type": "object", + "required": [ + "id", + "init" + ], + "properties": { "id": { "description": "The identifier of the variable.", "allOf": [ @@ -135880,6 +135280,16 @@ "maxItems": 32, "minItems": 32, "nullable": true + }, + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 } } }, @@ -135922,7 +135332,9 @@ } }, "currentEnv": { - "$ref": "#/components/schemas/EnvironmentRef" + "type": "integer", + "format": "uint", + "minimum": 0.0 }, "return": { "allOf": [ @@ -135947,20 +135359,12 @@ } }, "parent": { - "allOf": [ - { - "$ref": "#/components/schemas/EnvironmentRef" - } - ], + "type": "integer", + "format": "uint", + "minimum": 0.0, "nullable": true } } - }, - "EnvironmentRef": { - "description": "An index pointing to an environment.", - "type": "integer", - "format": "uint", - "minimum": 0.0 } } }, @@ -136034,8 +135438,6 @@ { "type": "object", "required": [ - "end", - "start", "type", "value" ], @@ -136046,16 +135448,6 @@ "TagDeclarator" ] }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, "value": { "type": "string" }, @@ -136069,6 +135461,16 @@ "maxItems": 32, "minItems": 32, "nullable": true + }, + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 } } }, @@ -136970,21 +136372,9 @@ "TagDeclarator": { "type": "object", "required": [ - "end", - "start", "value" ], "properties": { - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, "value": { "type": "string" }, @@ -136998,6 +136388,16 @@ "maxItems": 32, "minItems": 32, "nullable": true + }, + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 } } }, @@ -137675,21 +137075,9 @@ "type": "object", "required": [ "body", - "end", - "params", - "start" + "params" ], "properties": { - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, "params": { "type": "array", "items": { @@ -137709,6 +137097,16 @@ "maxItems": 32, "minItems": 32, "nullable": true + }, + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 } } }, @@ -137748,21 +137146,9 @@ "Identifier": { "type": "object", "required": [ - "end", - "name", - "start" + "name" ], "properties": { - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, "name": { "type": "string" }, @@ -137776,18 +137162,7 @@ "maxItems": 32, "minItems": 32, "nullable": true - } - } - }, - "Program": { - "description": "A KCL program top level, or function body.", - "type": "object", - "required": [ - "body", - "end", - "start" - ], - "properties": { + }, "start": { "type": "integer", "format": "uint", @@ -137797,7 +137172,16 @@ "type": "integer", "format": "uint", "minimum": 0.0 - }, + } + } + }, + "Program": { + "description": "A KCL program top level, or function body.", + "type": "object", + "required": [ + "body" + ], + "properties": { "body": { "type": "array", "items": { @@ -137817,6 +137201,16 @@ "maxItems": 32, "minItems": 32, "nullable": true + }, + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 } } }, @@ -137825,11 +137219,9 @@ { "type": "object", "required": [ - "end", "items", "path", "raw_path", - "start", "type" ], "properties": { @@ -137839,16 +137231,6 @@ "ImportStatement" ] }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, "items": { "type": "array", "items": { @@ -137871,23 +137253,6 @@ "maxItems": 32, "minItems": 32, "nullable": true - } - } - }, - { - "type": "object", - "required": [ - "end", - "expression", - "start", - "type" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "ExpressionStatement" - ] }, "start": { "type": "integer", @@ -137898,6 +137263,21 @@ "type": "integer", "format": "uint", "minimum": 0.0 + } + } + }, + { + "type": "object", + "required": [ + "expression", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "ExpressionStatement" + ] }, "expression": { "$ref": "#/components/schemas/Expr" @@ -137912,24 +137292,6 @@ "maxItems": 32, "minItems": 32, "nullable": true - } - } - }, - { - "type": "object", - "required": [ - "declarations", - "end", - "kind", - "start", - "type" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "VariableDeclaration" - ] }, "start": { "type": "integer", @@ -137940,6 +137302,22 @@ "type": "integer", "format": "uint", "minimum": 0.0 + } + } + }, + { + "type": "object", + "required": [ + "declarations", + "kind", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "VariableDeclaration" + ] }, "declarations": { "type": "array", @@ -137963,23 +137341,6 @@ "maxItems": 32, "minItems": 32, "nullable": true - } - } - }, - { - "type": "object", - "required": [ - "argument", - "end", - "start", - "type" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "ReturnStatement" - ] }, "start": { "type": "integer", @@ -137990,6 +137351,21 @@ "type": "integer", "format": "uint", "minimum": 0.0 + } + } + }, + { + "type": "object", + "required": [ + "argument", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "ReturnStatement" + ] }, "argument": { "$ref": "#/components/schemas/Expr" @@ -138004,6 +137380,16 @@ "maxItems": 32, "minItems": 32, "nullable": true + }, + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 } } } @@ -138012,9 +137398,7 @@ "ImportItem": { "type": "object", "required": [ - "end", - "name", - "start" + "name" ], "properties": { "name": { @@ -138034,16 +137418,6 @@ ], "nullable": true }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, "digest": { "type": "array", "items": { @@ -138054,6 +137428,16 @@ "maxItems": 32, "minItems": 32, "nullable": true + }, + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 } } }, @@ -138063,9 +137447,7 @@ { "type": "object", "required": [ - "end", "raw", - "start", "type", "value" ], @@ -138076,16 +137458,6 @@ "Literal" ] }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, "value": { "$ref": "#/components/schemas/LiteralValue" }, @@ -138102,23 +137474,6 @@ "maxItems": 32, "minItems": 32, "nullable": true - } - } - }, - { - "type": "object", - "required": [ - "end", - "name", - "start", - "type" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "Identifier" - ] }, "start": { "type": "integer", @@ -138129,6 +137484,21 @@ "type": "integer", "format": "uint", "minimum": 0.0 + } + } + }, + { + "type": "object", + "required": [ + "name", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Identifier" + ] }, "name": { "type": "string" @@ -138143,23 +137513,6 @@ "maxItems": 32, "minItems": 32, "nullable": true - } - } - }, - { - "type": "object", - "required": [ - "end", - "start", - "type", - "value" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "TagDeclarator" - ] }, "start": { "type": "integer", @@ -138170,6 +137523,21 @@ "type": "integer", "format": "uint", "minimum": 0.0 + } + } + }, + { + "type": "object", + "required": [ + "type", + "value" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "TagDeclarator" + ] }, "value": { "type": "string" @@ -138184,25 +137552,6 @@ "maxItems": 32, "minItems": 32, "nullable": true - } - } - }, - { - "type": "object", - "required": [ - "end", - "left", - "operator", - "right", - "start", - "type" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "BinaryExpression" - ] }, "start": { "type": "integer", @@ -138213,6 +137562,23 @@ "type": "integer", "format": "uint", "minimum": 0.0 + } + } + }, + { + "type": "object", + "required": [ + "left", + "operator", + "right", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "BinaryExpression" + ] }, "operator": { "$ref": "#/components/schemas/BinaryOperator" @@ -138233,24 +137599,6 @@ "maxItems": 32, "minItems": 32, "nullable": true - } - } - }, - { - "type": "object", - "required": [ - "body", - "end", - "params", - "start", - "type" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "FunctionExpression" - ] }, "start": { "type": "integer", @@ -138261,6 +137609,22 @@ "type": "integer", "format": "uint", "minimum": 0.0 + } + } + }, + { + "type": "object", + "required": [ + "body", + "params", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "FunctionExpression" + ] }, "params": { "type": "array", @@ -138281,25 +137645,6 @@ "maxItems": 32, "minItems": 32, "nullable": true - } - } - }, - { - "type": "object", - "required": [ - "arguments", - "callee", - "end", - "optional", - "start", - "type" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "CallExpression" - ] }, "start": { "type": "integer", @@ -138310,6 +137655,23 @@ "type": "integer", "format": "uint", "minimum": 0.0 + } + } + }, + { + "type": "object", + "required": [ + "arguments", + "callee", + "optional", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "CallExpression" + ] }, "callee": { "$ref": "#/components/schemas/Identifier" @@ -138333,23 +137695,6 @@ "maxItems": 32, "minItems": 32, "nullable": true - } - } - }, - { - "type": "object", - "required": [ - "body", - "end", - "start", - "type" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "PipeExpression" - ] }, "start": { "type": "integer", @@ -138360,6 +137705,21 @@ "type": "integer", "format": "uint", "minimum": 0.0 + } + } + }, + { + "type": "object", + "required": [ + "body", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "PipeExpression" + ] }, "body": { "type": "array", @@ -138380,22 +137740,6 @@ "maxItems": 32, "minItems": 32, "nullable": true - } - } - }, - { - "type": "object", - "required": [ - "end", - "start", - "type" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "PipeSubstitution" - ] }, "start": { "type": "integer", @@ -138406,6 +137750,20 @@ "type": "integer", "format": "uint", "minimum": 0.0 + } + } + }, + { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "PipeSubstitution" + ] }, "digest": { "type": "array", @@ -138417,23 +137775,6 @@ "maxItems": 32, "minItems": 32, "nullable": true - } - } - }, - { - "type": "object", - "required": [ - "elements", - "end", - "start", - "type" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "ArrayExpression" - ] }, "start": { "type": "integer", @@ -138444,6 +137785,21 @@ "type": "integer", "format": "uint", "minimum": 0.0 + } + } + }, + { + "type": "object", + "required": [ + "elements", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "ArrayExpression" + ] }, "elements": { "type": "array", @@ -138464,25 +137820,6 @@ "maxItems": 32, "minItems": 32, "nullable": true - } - } - }, - { - "type": "object", - "required": [ - "end", - "endElement", - "endInclusive", - "start", - "startElement", - "type" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "ArrayRangeExpression" - ] }, "start": { "type": "integer", @@ -138493,6 +137830,23 @@ "type": "integer", "format": "uint", "minimum": 0.0 + } + } + }, + { + "type": "object", + "required": [ + "endElement", + "endInclusive", + "startElement", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "ArrayRangeExpression" + ] }, "startElement": { "$ref": "#/components/schemas/Expr" @@ -138514,23 +137868,6 @@ "maxItems": 32, "minItems": 32, "nullable": true - } - } - }, - { - "type": "object", - "required": [ - "end", - "properties", - "start", - "type" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "ObjectExpression" - ] }, "start": { "type": "integer", @@ -138541,6 +137878,21 @@ "type": "integer", "format": "uint", "minimum": 0.0 + } + } + }, + { + "type": "object", + "required": [ + "properties", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "ObjectExpression" + ] }, "properties": { "type": "array", @@ -138561,25 +137913,6 @@ "maxItems": 32, "minItems": 32, "nullable": true - } - } - }, - { - "type": "object", - "required": [ - "computed", - "end", - "object", - "property", - "start", - "type" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "MemberExpression" - ] }, "start": { "type": "integer", @@ -138590,6 +137923,23 @@ "type": "integer", "format": "uint", "minimum": 0.0 + } + } + }, + { + "type": "object", + "required": [ + "computed", + "object", + "property", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "MemberExpression" + ] }, "object": { "$ref": "#/components/schemas/MemberObject" @@ -138610,24 +137960,6 @@ "maxItems": 32, "minItems": 32, "nullable": true - } - } - }, - { - "type": "object", - "required": [ - "argument", - "end", - "operator", - "start", - "type" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "UnaryExpression" - ] }, "start": { "type": "integer", @@ -138638,6 +137970,22 @@ "type": "integer", "format": "uint", "minimum": 0.0 + } + } + }, + { + "type": "object", + "required": [ + "argument", + "operator", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "UnaryExpression" + ] }, "operator": { "$ref": "#/components/schemas/UnaryOperator" @@ -138655,26 +138003,6 @@ "maxItems": 32, "minItems": 32, "nullable": true - } - } - }, - { - "type": "object", - "required": [ - "cond", - "else_ifs", - "end", - "final_else", - "start", - "then_val", - "type" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "IfExpression" - ] }, "start": { "type": "integer", @@ -138685,6 +138013,24 @@ "type": "integer", "format": "uint", "minimum": 0.0 + } + } + }, + { + "type": "object", + "required": [ + "cond", + "else_ifs", + "final_else", + "then_val", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "IfExpression" + ] }, "cond": { "$ref": "#/components/schemas/Expr" @@ -138711,6 +138057,16 @@ "maxItems": 32, "minItems": 32, "nullable": true + }, + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 } } }, @@ -138854,9 +138210,7 @@ { "type": "object", "required": [ - "end", "raw", - "start", "type", "value" ], @@ -138867,16 +138221,6 @@ "Literal" ] }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, "value": { "$ref": "#/components/schemas/LiteralValue" }, @@ -138893,23 +138237,6 @@ "maxItems": 32, "minItems": 32, "nullable": true - } - } - }, - { - "type": "object", - "required": [ - "end", - "name", - "start", - "type" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "Identifier" - ] }, "start": { "type": "integer", @@ -138920,6 +138247,21 @@ "type": "integer", "format": "uint", "minimum": 0.0 + } + } + }, + { + "type": "object", + "required": [ + "name", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Identifier" + ] }, "name": { "type": "string" @@ -138934,25 +138276,6 @@ "maxItems": 32, "minItems": 32, "nullable": true - } - } - }, - { - "type": "object", - "required": [ - "end", - "left", - "operator", - "right", - "start", - "type" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "BinaryExpression" - ] }, "start": { "type": "integer", @@ -138963,6 +138286,23 @@ "type": "integer", "format": "uint", "minimum": 0.0 + } + } + }, + { + "type": "object", + "required": [ + "left", + "operator", + "right", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "BinaryExpression" + ] }, "operator": { "$ref": "#/components/schemas/BinaryOperator" @@ -138983,25 +138323,6 @@ "maxItems": 32, "minItems": 32, "nullable": true - } - } - }, - { - "type": "object", - "required": [ - "arguments", - "callee", - "end", - "optional", - "start", - "type" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "CallExpression" - ] }, "start": { "type": "integer", @@ -139012,6 +138333,23 @@ "type": "integer", "format": "uint", "minimum": 0.0 + } + } + }, + { + "type": "object", + "required": [ + "arguments", + "callee", + "optional", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "CallExpression" + ] }, "callee": { "$ref": "#/components/schemas/Identifier" @@ -139035,24 +138373,6 @@ "maxItems": 32, "minItems": 32, "nullable": true - } - } - }, - { - "type": "object", - "required": [ - "argument", - "end", - "operator", - "start", - "type" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "UnaryExpression" - ] }, "start": { "type": "integer", @@ -139063,6 +138383,22 @@ "type": "integer", "format": "uint", "minimum": 0.0 + } + } + }, + { + "type": "object", + "required": [ + "argument", + "operator", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "UnaryExpression" + ] }, "operator": { "$ref": "#/components/schemas/UnaryOperator" @@ -139080,25 +138416,6 @@ "maxItems": 32, "minItems": 32, "nullable": true - } - } - }, - { - "type": "object", - "required": [ - "computed", - "end", - "object", - "property", - "start", - "type" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "MemberExpression" - ] }, "start": { "type": "integer", @@ -139109,6 +138426,23 @@ "type": "integer", "format": "uint", "minimum": 0.0 + } + } + }, + { + "type": "object", + "required": [ + "computed", + "object", + "property", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "MemberExpression" + ] }, "object": { "$ref": "#/components/schemas/MemberObject" @@ -139129,26 +138463,6 @@ "maxItems": 32, "minItems": 32, "nullable": true - } - } - }, - { - "type": "object", - "required": [ - "cond", - "else_ifs", - "end", - "final_else", - "start", - "then_val", - "type" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "IfExpression" - ] }, "start": { "type": "integer", @@ -139159,6 +138473,24 @@ "type": "integer", "format": "uint", "minimum": 0.0 + } + } + }, + { + "type": "object", + "required": [ + "cond", + "else_ifs", + "final_else", + "then_val", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "IfExpression" + ] }, "cond": { "$ref": "#/components/schemas/Expr" @@ -139185,6 +138517,16 @@ "maxItems": 32, "minItems": 32, "nullable": true + }, + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 } } } @@ -139214,10 +138556,8 @@ "type": "object", "required": [ "computed", - "end", "object", "property", - "start", "type" ], "properties": { @@ -139227,16 +138567,6 @@ "MemberExpression" ] }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, "object": { "$ref": "#/components/schemas/MemberObject" }, @@ -139256,23 +138586,6 @@ "maxItems": 32, "minItems": 32, "nullable": true - } - } - }, - { - "type": "object", - "required": [ - "end", - "name", - "start", - "type" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "Identifier" - ] }, "start": { "type": "integer", @@ -139283,6 +138596,21 @@ "type": "integer", "format": "uint", "minimum": 0.0 + } + } + }, + { + "type": "object", + "required": [ + "name", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Identifier" + ] }, "name": { "type": "string" @@ -139297,6 +138625,16 @@ "maxItems": 32, "minItems": 32, "nullable": true + }, + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 } } } @@ -139307,9 +138645,7 @@ { "type": "object", "required": [ - "end", "name", - "start", "type" ], "properties": { @@ -139319,16 +138655,6 @@ "Identifier" ] }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, "name": { "type": "string" }, @@ -139342,24 +138668,6 @@ "maxItems": 32, "minItems": 32, "nullable": true - } - } - }, - { - "type": "object", - "required": [ - "end", - "raw", - "start", - "type", - "value" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "Literal" - ] }, "start": { "type": "integer", @@ -139370,6 +138678,22 @@ "type": "integer", "format": "uint", "minimum": 0.0 + } + } + }, + { + "type": "object", + "required": [ + "raw", + "type", + "value" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Literal" + ] }, "value": { "$ref": "#/components/schemas/LiteralValue" @@ -139387,6 +138711,16 @@ "maxItems": 32, "minItems": 32, "nullable": true + }, + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 } } } @@ -139396,21 +138730,9 @@ "type": "object", "required": [ "cond", - "end", - "start", "then_val" ], "properties": { - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, "cond": { "$ref": "#/components/schemas/Expr" }, @@ -139427,6 +138749,16 @@ "maxItems": 32, "minItems": 32, "nullable": true + }, + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 } } }, @@ -139434,7 +138766,7 @@ "type": "object", "required": [ "nonCodeNodes", - "start" + "startNodes" ], "properties": { "nonCodeNodes": { @@ -139446,7 +138778,7 @@ } } }, - "start": { + "startNodes": { "type": "array", "items": { "$ref": "#/components/schemas/NonCodeNode" @@ -139468,21 +138800,9 @@ "NonCodeNode": { "type": "object", "required": [ - "end", - "start", "value" ], "properties": { - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, "value": { "$ref": "#/components/schemas/NonCodeValue" }, @@ -139496,6 +138816,16 @@ "maxItems": 32, "minItems": 32, "nullable": true + }, + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 } } }, @@ -139626,22 +138956,10 @@ "ObjectProperty": { "type": "object", "required": [ - "end", "key", - "start", "value" ], "properties": { - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, "key": { "$ref": "#/components/schemas/Identifier" }, @@ -139658,18 +138976,7 @@ "maxItems": 32, "minItems": 32, "nullable": true - } - } - }, - "VariableDeclarator": { - "type": "object", - "required": [ - "end", - "id", - "init", - "start" - ], - "properties": { + }, "start": { "type": "integer", "format": "uint", @@ -139679,7 +138986,16 @@ "type": "integer", "format": "uint", "minimum": 0.0 - }, + } + } + }, + "VariableDeclarator": { + "type": "object", + "required": [ + "id", + "init" + ], + "properties": { "id": { "description": "The identifier of the variable.", "allOf": [ @@ -139706,6 +139022,16 @@ "maxItems": 32, "minItems": 32, "nullable": true + }, + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 } } }, @@ -139748,7 +139074,9 @@ } }, "currentEnv": { - "$ref": "#/components/schemas/EnvironmentRef" + "type": "integer", + "format": "uint", + "minimum": 0.0 }, "return": { "allOf": [ @@ -139773,11 +139101,9 @@ } }, "parent": { - "allOf": [ - { - "$ref": "#/components/schemas/EnvironmentRef" - } - ], + "type": "integer", + "format": "uint", + "minimum": 0.0, "nullable": true } } @@ -139844,8 +139170,6 @@ { "type": "object", "required": [ - "end", - "start", "type", "value" ], @@ -139856,16 +139180,6 @@ "TagDeclarator" ] }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, "value": { "type": "string" }, @@ -139879,6 +139193,16 @@ "maxItems": 32, "minItems": 32, "nullable": true + }, + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 } } }, @@ -140177,12 +139501,6 @@ } } ] - }, - "EnvironmentRef": { - "description": "An index pointing to an environment.", - "type": "integer", - "format": "uint", - "minimum": 0.0 } } }, @@ -140273,8 +139591,6 @@ { "type": "object", "required": [ - "end", - "start", "type", "value" ], @@ -140285,16 +139601,6 @@ "TagDeclarator" ] }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, "value": { "type": "string" }, @@ -140308,6 +139614,16 @@ "maxItems": 32, "minItems": 32, "nullable": true + }, + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 } } }, @@ -141209,21 +140525,9 @@ "TagDeclarator": { "type": "object", "required": [ - "end", - "start", "value" ], "properties": { - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, "value": { "type": "string" }, @@ -141237,6 +140541,16 @@ "maxItems": 32, "minItems": 32, "nullable": true + }, + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 } } }, @@ -141914,21 +141228,9 @@ "type": "object", "required": [ "body", - "end", - "params", - "start" + "params" ], "properties": { - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, "params": { "type": "array", "items": { @@ -141948,6 +141250,16 @@ "maxItems": 32, "minItems": 32, "nullable": true + }, + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 } } }, @@ -141987,21 +141299,9 @@ "Identifier": { "type": "object", "required": [ - "end", - "name", - "start" + "name" ], "properties": { - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, "name": { "type": "string" }, @@ -142015,18 +141315,7 @@ "maxItems": 32, "minItems": 32, "nullable": true - } - } - }, - "Program": { - "description": "A KCL program top level, or function body.", - "type": "object", - "required": [ - "body", - "end", - "start" - ], - "properties": { + }, "start": { "type": "integer", "format": "uint", @@ -142036,7 +141325,16 @@ "type": "integer", "format": "uint", "minimum": 0.0 - }, + } + } + }, + "Program": { + "description": "A KCL program top level, or function body.", + "type": "object", + "required": [ + "body" + ], + "properties": { "body": { "type": "array", "items": { @@ -142056,6 +141354,16 @@ "maxItems": 32, "minItems": 32, "nullable": true + }, + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 } } }, @@ -142064,11 +141372,9 @@ { "type": "object", "required": [ - "end", "items", "path", "raw_path", - "start", "type" ], "properties": { @@ -142078,16 +141384,6 @@ "ImportStatement" ] }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, "items": { "type": "array", "items": { @@ -142110,23 +141406,6 @@ "maxItems": 32, "minItems": 32, "nullable": true - } - } - }, - { - "type": "object", - "required": [ - "end", - "expression", - "start", - "type" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "ExpressionStatement" - ] }, "start": { "type": "integer", @@ -142137,6 +141416,21 @@ "type": "integer", "format": "uint", "minimum": 0.0 + } + } + }, + { + "type": "object", + "required": [ + "expression", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "ExpressionStatement" + ] }, "expression": { "$ref": "#/components/schemas/Expr" @@ -142151,24 +141445,6 @@ "maxItems": 32, "minItems": 32, "nullable": true - } - } - }, - { - "type": "object", - "required": [ - "declarations", - "end", - "kind", - "start", - "type" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "VariableDeclaration" - ] }, "start": { "type": "integer", @@ -142179,6 +141455,22 @@ "type": "integer", "format": "uint", "minimum": 0.0 + } + } + }, + { + "type": "object", + "required": [ + "declarations", + "kind", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "VariableDeclaration" + ] }, "declarations": { "type": "array", @@ -142202,23 +141494,6 @@ "maxItems": 32, "minItems": 32, "nullable": true - } - } - }, - { - "type": "object", - "required": [ - "argument", - "end", - "start", - "type" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "ReturnStatement" - ] }, "start": { "type": "integer", @@ -142229,6 +141504,21 @@ "type": "integer", "format": "uint", "minimum": 0.0 + } + } + }, + { + "type": "object", + "required": [ + "argument", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "ReturnStatement" + ] }, "argument": { "$ref": "#/components/schemas/Expr" @@ -142243,6 +141533,16 @@ "maxItems": 32, "minItems": 32, "nullable": true + }, + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 } } } @@ -142251,9 +141551,7 @@ "ImportItem": { "type": "object", "required": [ - "end", - "name", - "start" + "name" ], "properties": { "name": { @@ -142273,16 +141571,6 @@ ], "nullable": true }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, "digest": { "type": "array", "items": { @@ -142293,6 +141581,16 @@ "maxItems": 32, "minItems": 32, "nullable": true + }, + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 } } }, @@ -142302,9 +141600,7 @@ { "type": "object", "required": [ - "end", "raw", - "start", "type", "value" ], @@ -142315,16 +141611,6 @@ "Literal" ] }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, "value": { "$ref": "#/components/schemas/LiteralValue" }, @@ -142341,23 +141627,6 @@ "maxItems": 32, "minItems": 32, "nullable": true - } - } - }, - { - "type": "object", - "required": [ - "end", - "name", - "start", - "type" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "Identifier" - ] }, "start": { "type": "integer", @@ -142368,6 +141637,21 @@ "type": "integer", "format": "uint", "minimum": 0.0 + } + } + }, + { + "type": "object", + "required": [ + "name", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Identifier" + ] }, "name": { "type": "string" @@ -142382,23 +141666,6 @@ "maxItems": 32, "minItems": 32, "nullable": true - } - } - }, - { - "type": "object", - "required": [ - "end", - "start", - "type", - "value" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "TagDeclarator" - ] }, "start": { "type": "integer", @@ -142409,6 +141676,21 @@ "type": "integer", "format": "uint", "minimum": 0.0 + } + } + }, + { + "type": "object", + "required": [ + "type", + "value" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "TagDeclarator" + ] }, "value": { "type": "string" @@ -142423,25 +141705,6 @@ "maxItems": 32, "minItems": 32, "nullable": true - } - } - }, - { - "type": "object", - "required": [ - "end", - "left", - "operator", - "right", - "start", - "type" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "BinaryExpression" - ] }, "start": { "type": "integer", @@ -142452,6 +141715,23 @@ "type": "integer", "format": "uint", "minimum": 0.0 + } + } + }, + { + "type": "object", + "required": [ + "left", + "operator", + "right", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "BinaryExpression" + ] }, "operator": { "$ref": "#/components/schemas/BinaryOperator" @@ -142472,24 +141752,6 @@ "maxItems": 32, "minItems": 32, "nullable": true - } - } - }, - { - "type": "object", - "required": [ - "body", - "end", - "params", - "start", - "type" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "FunctionExpression" - ] }, "start": { "type": "integer", @@ -142500,6 +141762,22 @@ "type": "integer", "format": "uint", "minimum": 0.0 + } + } + }, + { + "type": "object", + "required": [ + "body", + "params", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "FunctionExpression" + ] }, "params": { "type": "array", @@ -142520,25 +141798,6 @@ "maxItems": 32, "minItems": 32, "nullable": true - } - } - }, - { - "type": "object", - "required": [ - "arguments", - "callee", - "end", - "optional", - "start", - "type" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "CallExpression" - ] }, "start": { "type": "integer", @@ -142549,6 +141808,23 @@ "type": "integer", "format": "uint", "minimum": 0.0 + } + } + }, + { + "type": "object", + "required": [ + "arguments", + "callee", + "optional", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "CallExpression" + ] }, "callee": { "$ref": "#/components/schemas/Identifier" @@ -142572,23 +141848,6 @@ "maxItems": 32, "minItems": 32, "nullable": true - } - } - }, - { - "type": "object", - "required": [ - "body", - "end", - "start", - "type" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "PipeExpression" - ] }, "start": { "type": "integer", @@ -142599,6 +141858,21 @@ "type": "integer", "format": "uint", "minimum": 0.0 + } + } + }, + { + "type": "object", + "required": [ + "body", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "PipeExpression" + ] }, "body": { "type": "array", @@ -142619,22 +141893,6 @@ "maxItems": 32, "minItems": 32, "nullable": true - } - } - }, - { - "type": "object", - "required": [ - "end", - "start", - "type" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "PipeSubstitution" - ] }, "start": { "type": "integer", @@ -142645,6 +141903,20 @@ "type": "integer", "format": "uint", "minimum": 0.0 + } + } + }, + { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "PipeSubstitution" + ] }, "digest": { "type": "array", @@ -142656,23 +141928,6 @@ "maxItems": 32, "minItems": 32, "nullable": true - } - } - }, - { - "type": "object", - "required": [ - "elements", - "end", - "start", - "type" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "ArrayExpression" - ] }, "start": { "type": "integer", @@ -142683,6 +141938,21 @@ "type": "integer", "format": "uint", "minimum": 0.0 + } + } + }, + { + "type": "object", + "required": [ + "elements", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "ArrayExpression" + ] }, "elements": { "type": "array", @@ -142703,25 +141973,6 @@ "maxItems": 32, "minItems": 32, "nullable": true - } - } - }, - { - "type": "object", - "required": [ - "end", - "endElement", - "endInclusive", - "start", - "startElement", - "type" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "ArrayRangeExpression" - ] }, "start": { "type": "integer", @@ -142732,6 +141983,23 @@ "type": "integer", "format": "uint", "minimum": 0.0 + } + } + }, + { + "type": "object", + "required": [ + "endElement", + "endInclusive", + "startElement", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "ArrayRangeExpression" + ] }, "startElement": { "$ref": "#/components/schemas/Expr" @@ -142753,23 +142021,6 @@ "maxItems": 32, "minItems": 32, "nullable": true - } - } - }, - { - "type": "object", - "required": [ - "end", - "properties", - "start", - "type" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "ObjectExpression" - ] }, "start": { "type": "integer", @@ -142780,6 +142031,21 @@ "type": "integer", "format": "uint", "minimum": 0.0 + } + } + }, + { + "type": "object", + "required": [ + "properties", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "ObjectExpression" + ] }, "properties": { "type": "array", @@ -142800,25 +142066,6 @@ "maxItems": 32, "minItems": 32, "nullable": true - } - } - }, - { - "type": "object", - "required": [ - "computed", - "end", - "object", - "property", - "start", - "type" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "MemberExpression" - ] }, "start": { "type": "integer", @@ -142829,6 +142076,23 @@ "type": "integer", "format": "uint", "minimum": 0.0 + } + } + }, + { + "type": "object", + "required": [ + "computed", + "object", + "property", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "MemberExpression" + ] }, "object": { "$ref": "#/components/schemas/MemberObject" @@ -142849,24 +142113,6 @@ "maxItems": 32, "minItems": 32, "nullable": true - } - } - }, - { - "type": "object", - "required": [ - "argument", - "end", - "operator", - "start", - "type" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "UnaryExpression" - ] }, "start": { "type": "integer", @@ -142877,6 +142123,22 @@ "type": "integer", "format": "uint", "minimum": 0.0 + } + } + }, + { + "type": "object", + "required": [ + "argument", + "operator", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "UnaryExpression" + ] }, "operator": { "$ref": "#/components/schemas/UnaryOperator" @@ -142894,26 +142156,6 @@ "maxItems": 32, "minItems": 32, "nullable": true - } - } - }, - { - "type": "object", - "required": [ - "cond", - "else_ifs", - "end", - "final_else", - "start", - "then_val", - "type" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "IfExpression" - ] }, "start": { "type": "integer", @@ -142924,6 +142166,24 @@ "type": "integer", "format": "uint", "minimum": 0.0 + } + } + }, + { + "type": "object", + "required": [ + "cond", + "else_ifs", + "final_else", + "then_val", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "IfExpression" + ] }, "cond": { "$ref": "#/components/schemas/Expr" @@ -142950,6 +142210,16 @@ "maxItems": 32, "minItems": 32, "nullable": true + }, + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 } } }, @@ -143093,9 +142363,7 @@ { "type": "object", "required": [ - "end", "raw", - "start", "type", "value" ], @@ -143106,16 +142374,6 @@ "Literal" ] }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, "value": { "$ref": "#/components/schemas/LiteralValue" }, @@ -143132,23 +142390,6 @@ "maxItems": 32, "minItems": 32, "nullable": true - } - } - }, - { - "type": "object", - "required": [ - "end", - "name", - "start", - "type" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "Identifier" - ] }, "start": { "type": "integer", @@ -143159,6 +142400,21 @@ "type": "integer", "format": "uint", "minimum": 0.0 + } + } + }, + { + "type": "object", + "required": [ + "name", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Identifier" + ] }, "name": { "type": "string" @@ -143173,25 +142429,6 @@ "maxItems": 32, "minItems": 32, "nullable": true - } - } - }, - { - "type": "object", - "required": [ - "end", - "left", - "operator", - "right", - "start", - "type" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "BinaryExpression" - ] }, "start": { "type": "integer", @@ -143202,6 +142439,23 @@ "type": "integer", "format": "uint", "minimum": 0.0 + } + } + }, + { + "type": "object", + "required": [ + "left", + "operator", + "right", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "BinaryExpression" + ] }, "operator": { "$ref": "#/components/schemas/BinaryOperator" @@ -143222,25 +142476,6 @@ "maxItems": 32, "minItems": 32, "nullable": true - } - } - }, - { - "type": "object", - "required": [ - "arguments", - "callee", - "end", - "optional", - "start", - "type" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "CallExpression" - ] }, "start": { "type": "integer", @@ -143251,6 +142486,23 @@ "type": "integer", "format": "uint", "minimum": 0.0 + } + } + }, + { + "type": "object", + "required": [ + "arguments", + "callee", + "optional", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "CallExpression" + ] }, "callee": { "$ref": "#/components/schemas/Identifier" @@ -143274,24 +142526,6 @@ "maxItems": 32, "minItems": 32, "nullable": true - } - } - }, - { - "type": "object", - "required": [ - "argument", - "end", - "operator", - "start", - "type" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "UnaryExpression" - ] }, "start": { "type": "integer", @@ -143302,6 +142536,22 @@ "type": "integer", "format": "uint", "minimum": 0.0 + } + } + }, + { + "type": "object", + "required": [ + "argument", + "operator", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "UnaryExpression" + ] }, "operator": { "$ref": "#/components/schemas/UnaryOperator" @@ -143319,25 +142569,6 @@ "maxItems": 32, "minItems": 32, "nullable": true - } - } - }, - { - "type": "object", - "required": [ - "computed", - "end", - "object", - "property", - "start", - "type" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "MemberExpression" - ] }, "start": { "type": "integer", @@ -143348,6 +142579,23 @@ "type": "integer", "format": "uint", "minimum": 0.0 + } + } + }, + { + "type": "object", + "required": [ + "computed", + "object", + "property", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "MemberExpression" + ] }, "object": { "$ref": "#/components/schemas/MemberObject" @@ -143368,26 +142616,6 @@ "maxItems": 32, "minItems": 32, "nullable": true - } - } - }, - { - "type": "object", - "required": [ - "cond", - "else_ifs", - "end", - "final_else", - "start", - "then_val", - "type" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "IfExpression" - ] }, "start": { "type": "integer", @@ -143398,6 +142626,24 @@ "type": "integer", "format": "uint", "minimum": 0.0 + } + } + }, + { + "type": "object", + "required": [ + "cond", + "else_ifs", + "final_else", + "then_val", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "IfExpression" + ] }, "cond": { "$ref": "#/components/schemas/Expr" @@ -143424,6 +142670,16 @@ "maxItems": 32, "minItems": 32, "nullable": true + }, + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 } } } @@ -143453,10 +142709,8 @@ "type": "object", "required": [ "computed", - "end", "object", "property", - "start", "type" ], "properties": { @@ -143466,16 +142720,6 @@ "MemberExpression" ] }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, "object": { "$ref": "#/components/schemas/MemberObject" }, @@ -143495,23 +142739,6 @@ "maxItems": 32, "minItems": 32, "nullable": true - } - } - }, - { - "type": "object", - "required": [ - "end", - "name", - "start", - "type" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "Identifier" - ] }, "start": { "type": "integer", @@ -143522,6 +142749,21 @@ "type": "integer", "format": "uint", "minimum": 0.0 + } + } + }, + { + "type": "object", + "required": [ + "name", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Identifier" + ] }, "name": { "type": "string" @@ -143536,6 +142778,16 @@ "maxItems": 32, "minItems": 32, "nullable": true + }, + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 } } } @@ -143546,9 +142798,7 @@ { "type": "object", "required": [ - "end", "name", - "start", "type" ], "properties": { @@ -143558,16 +142808,6 @@ "Identifier" ] }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, "name": { "type": "string" }, @@ -143581,24 +142821,6 @@ "maxItems": 32, "minItems": 32, "nullable": true - } - } - }, - { - "type": "object", - "required": [ - "end", - "raw", - "start", - "type", - "value" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "Literal" - ] }, "start": { "type": "integer", @@ -143609,6 +142831,22 @@ "type": "integer", "format": "uint", "minimum": 0.0 + } + } + }, + { + "type": "object", + "required": [ + "raw", + "type", + "value" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Literal" + ] }, "value": { "$ref": "#/components/schemas/LiteralValue" @@ -143626,6 +142864,16 @@ "maxItems": 32, "minItems": 32, "nullable": true + }, + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 } } } @@ -143635,21 +142883,9 @@ "type": "object", "required": [ "cond", - "end", - "start", "then_val" ], "properties": { - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, "cond": { "$ref": "#/components/schemas/Expr" }, @@ -143666,6 +142902,16 @@ "maxItems": 32, "minItems": 32, "nullable": true + }, + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 } } }, @@ -143673,7 +142919,7 @@ "type": "object", "required": [ "nonCodeNodes", - "start" + "startNodes" ], "properties": { "nonCodeNodes": { @@ -143685,7 +142931,7 @@ } } }, - "start": { + "startNodes": { "type": "array", "items": { "$ref": "#/components/schemas/NonCodeNode" @@ -143707,21 +142953,9 @@ "NonCodeNode": { "type": "object", "required": [ - "end", - "start", "value" ], "properties": { - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, "value": { "$ref": "#/components/schemas/NonCodeValue" }, @@ -143735,6 +142969,16 @@ "maxItems": 32, "minItems": 32, "nullable": true + }, + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 } } }, @@ -143865,22 +143109,10 @@ "ObjectProperty": { "type": "object", "required": [ - "end", "key", - "start", "value" ], "properties": { - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, "key": { "$ref": "#/components/schemas/Identifier" }, @@ -143897,18 +143129,7 @@ "maxItems": 32, "minItems": 32, "nullable": true - } - } - }, - "VariableDeclarator": { - "type": "object", - "required": [ - "end", - "id", - "init", - "start" - ], - "properties": { + }, "start": { "type": "integer", "format": "uint", @@ -143918,7 +143139,16 @@ "type": "integer", "format": "uint", "minimum": 0.0 - }, + } + } + }, + "VariableDeclarator": { + "type": "object", + "required": [ + "id", + "init" + ], + "properties": { "id": { "description": "The identifier of the variable.", "allOf": [ @@ -143945,6 +143175,16 @@ "maxItems": 32, "minItems": 32, "nullable": true + }, + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 } } }, @@ -143987,7 +143227,9 @@ } }, "currentEnv": { - "$ref": "#/components/schemas/EnvironmentRef" + "type": "integer", + "format": "uint", + "minimum": 0.0 }, "return": { "allOf": [ @@ -144012,20 +143254,12 @@ } }, "parent": { - "allOf": [ - { - "$ref": "#/components/schemas/EnvironmentRef" - } - ], + "type": "integer", + "format": "uint", + "minimum": 0.0, "nullable": true } } - }, - "EnvironmentRef": { - "description": "An index pointing to an environment.", - "type": "integer", - "format": "uint", - "minimum": 0.0 } } }, @@ -144098,8 +143332,6 @@ { "type": "object", "required": [ - "end", - "start", "type", "value" ], @@ -144110,16 +143342,6 @@ "TagDeclarator" ] }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, "value": { "type": "string" }, @@ -144133,6 +143355,16 @@ "maxItems": 32, "minItems": 32, "nullable": true + }, + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 } } }, @@ -144494,8 +143726,6 @@ { "type": "object", "required": [ - "end", - "start", "type", "value" ], @@ -144506,16 +143736,6 @@ "TagDeclarator" ] }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, "value": { "type": "string" }, @@ -144529,6 +143749,16 @@ "maxItems": 32, "minItems": 32, "nullable": true + }, + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 } } }, @@ -145430,21 +144660,9 @@ "TagDeclarator": { "type": "object", "required": [ - "end", - "start", "value" ], "properties": { - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, "value": { "type": "string" }, @@ -145458,6 +144676,16 @@ "maxItems": 32, "minItems": 32, "nullable": true + }, + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 } } }, @@ -146135,21 +145363,9 @@ "type": "object", "required": [ "body", - "end", - "params", - "start" + "params" ], "properties": { - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, "params": { "type": "array", "items": { @@ -146169,6 +145385,16 @@ "maxItems": 32, "minItems": 32, "nullable": true + }, + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 } } }, @@ -146208,21 +145434,9 @@ "Identifier": { "type": "object", "required": [ - "end", - "name", - "start" + "name" ], "properties": { - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, "name": { "type": "string" }, @@ -146236,18 +145450,7 @@ "maxItems": 32, "minItems": 32, "nullable": true - } - } - }, - "Program": { - "description": "A KCL program top level, or function body.", - "type": "object", - "required": [ - "body", - "end", - "start" - ], - "properties": { + }, "start": { "type": "integer", "format": "uint", @@ -146257,7 +145460,16 @@ "type": "integer", "format": "uint", "minimum": 0.0 - }, + } + } + }, + "Program": { + "description": "A KCL program top level, or function body.", + "type": "object", + "required": [ + "body" + ], + "properties": { "body": { "type": "array", "items": { @@ -146277,6 +145489,16 @@ "maxItems": 32, "minItems": 32, "nullable": true + }, + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 } } }, @@ -146285,11 +145507,9 @@ { "type": "object", "required": [ - "end", "items", "path", "raw_path", - "start", "type" ], "properties": { @@ -146299,16 +145519,6 @@ "ImportStatement" ] }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, "items": { "type": "array", "items": { @@ -146331,23 +145541,6 @@ "maxItems": 32, "minItems": 32, "nullable": true - } - } - }, - { - "type": "object", - "required": [ - "end", - "expression", - "start", - "type" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "ExpressionStatement" - ] }, "start": { "type": "integer", @@ -146358,6 +145551,21 @@ "type": "integer", "format": "uint", "minimum": 0.0 + } + } + }, + { + "type": "object", + "required": [ + "expression", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "ExpressionStatement" + ] }, "expression": { "$ref": "#/components/schemas/Expr" @@ -146372,24 +145580,6 @@ "maxItems": 32, "minItems": 32, "nullable": true - } - } - }, - { - "type": "object", - "required": [ - "declarations", - "end", - "kind", - "start", - "type" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "VariableDeclaration" - ] }, "start": { "type": "integer", @@ -146400,6 +145590,22 @@ "type": "integer", "format": "uint", "minimum": 0.0 + } + } + }, + { + "type": "object", + "required": [ + "declarations", + "kind", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "VariableDeclaration" + ] }, "declarations": { "type": "array", @@ -146423,23 +145629,6 @@ "maxItems": 32, "minItems": 32, "nullable": true - } - } - }, - { - "type": "object", - "required": [ - "argument", - "end", - "start", - "type" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "ReturnStatement" - ] }, "start": { "type": "integer", @@ -146450,6 +145639,21 @@ "type": "integer", "format": "uint", "minimum": 0.0 + } + } + }, + { + "type": "object", + "required": [ + "argument", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "ReturnStatement" + ] }, "argument": { "$ref": "#/components/schemas/Expr" @@ -146464,6 +145668,16 @@ "maxItems": 32, "minItems": 32, "nullable": true + }, + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 } } } @@ -146472,9 +145686,7 @@ "ImportItem": { "type": "object", "required": [ - "end", - "name", - "start" + "name" ], "properties": { "name": { @@ -146494,16 +145706,6 @@ ], "nullable": true }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, "digest": { "type": "array", "items": { @@ -146514,6 +145716,16 @@ "maxItems": 32, "minItems": 32, "nullable": true + }, + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 } } }, @@ -146523,9 +145735,7 @@ { "type": "object", "required": [ - "end", "raw", - "start", "type", "value" ], @@ -146536,16 +145746,6 @@ "Literal" ] }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, "value": { "$ref": "#/components/schemas/LiteralValue" }, @@ -146562,23 +145762,6 @@ "maxItems": 32, "minItems": 32, "nullable": true - } - } - }, - { - "type": "object", - "required": [ - "end", - "name", - "start", - "type" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "Identifier" - ] }, "start": { "type": "integer", @@ -146589,6 +145772,21 @@ "type": "integer", "format": "uint", "minimum": 0.0 + } + } + }, + { + "type": "object", + "required": [ + "name", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Identifier" + ] }, "name": { "type": "string" @@ -146603,23 +145801,6 @@ "maxItems": 32, "minItems": 32, "nullable": true - } - } - }, - { - "type": "object", - "required": [ - "end", - "start", - "type", - "value" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "TagDeclarator" - ] }, "start": { "type": "integer", @@ -146630,6 +145811,21 @@ "type": "integer", "format": "uint", "minimum": 0.0 + } + } + }, + { + "type": "object", + "required": [ + "type", + "value" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "TagDeclarator" + ] }, "value": { "type": "string" @@ -146644,25 +145840,6 @@ "maxItems": 32, "minItems": 32, "nullable": true - } - } - }, - { - "type": "object", - "required": [ - "end", - "left", - "operator", - "right", - "start", - "type" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "BinaryExpression" - ] }, "start": { "type": "integer", @@ -146673,6 +145850,23 @@ "type": "integer", "format": "uint", "minimum": 0.0 + } + } + }, + { + "type": "object", + "required": [ + "left", + "operator", + "right", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "BinaryExpression" + ] }, "operator": { "$ref": "#/components/schemas/BinaryOperator" @@ -146693,24 +145887,6 @@ "maxItems": 32, "minItems": 32, "nullable": true - } - } - }, - { - "type": "object", - "required": [ - "body", - "end", - "params", - "start", - "type" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "FunctionExpression" - ] }, "start": { "type": "integer", @@ -146721,6 +145897,22 @@ "type": "integer", "format": "uint", "minimum": 0.0 + } + } + }, + { + "type": "object", + "required": [ + "body", + "params", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "FunctionExpression" + ] }, "params": { "type": "array", @@ -146741,25 +145933,6 @@ "maxItems": 32, "minItems": 32, "nullable": true - } - } - }, - { - "type": "object", - "required": [ - "arguments", - "callee", - "end", - "optional", - "start", - "type" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "CallExpression" - ] }, "start": { "type": "integer", @@ -146770,6 +145943,23 @@ "type": "integer", "format": "uint", "minimum": 0.0 + } + } + }, + { + "type": "object", + "required": [ + "arguments", + "callee", + "optional", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "CallExpression" + ] }, "callee": { "$ref": "#/components/schemas/Identifier" @@ -146793,23 +145983,6 @@ "maxItems": 32, "minItems": 32, "nullable": true - } - } - }, - { - "type": "object", - "required": [ - "body", - "end", - "start", - "type" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "PipeExpression" - ] }, "start": { "type": "integer", @@ -146820,6 +145993,21 @@ "type": "integer", "format": "uint", "minimum": 0.0 + } + } + }, + { + "type": "object", + "required": [ + "body", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "PipeExpression" + ] }, "body": { "type": "array", @@ -146840,22 +146028,6 @@ "maxItems": 32, "minItems": 32, "nullable": true - } - } - }, - { - "type": "object", - "required": [ - "end", - "start", - "type" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "PipeSubstitution" - ] }, "start": { "type": "integer", @@ -146866,6 +146038,20 @@ "type": "integer", "format": "uint", "minimum": 0.0 + } + } + }, + { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "PipeSubstitution" + ] }, "digest": { "type": "array", @@ -146877,23 +146063,6 @@ "maxItems": 32, "minItems": 32, "nullable": true - } - } - }, - { - "type": "object", - "required": [ - "elements", - "end", - "start", - "type" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "ArrayExpression" - ] }, "start": { "type": "integer", @@ -146904,6 +146073,21 @@ "type": "integer", "format": "uint", "minimum": 0.0 + } + } + }, + { + "type": "object", + "required": [ + "elements", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "ArrayExpression" + ] }, "elements": { "type": "array", @@ -146924,25 +146108,6 @@ "maxItems": 32, "minItems": 32, "nullable": true - } - } - }, - { - "type": "object", - "required": [ - "end", - "endElement", - "endInclusive", - "start", - "startElement", - "type" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "ArrayRangeExpression" - ] }, "start": { "type": "integer", @@ -146953,6 +146118,23 @@ "type": "integer", "format": "uint", "minimum": 0.0 + } + } + }, + { + "type": "object", + "required": [ + "endElement", + "endInclusive", + "startElement", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "ArrayRangeExpression" + ] }, "startElement": { "$ref": "#/components/schemas/Expr" @@ -146974,23 +146156,6 @@ "maxItems": 32, "minItems": 32, "nullable": true - } - } - }, - { - "type": "object", - "required": [ - "end", - "properties", - "start", - "type" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "ObjectExpression" - ] }, "start": { "type": "integer", @@ -147001,6 +146166,21 @@ "type": "integer", "format": "uint", "minimum": 0.0 + } + } + }, + { + "type": "object", + "required": [ + "properties", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "ObjectExpression" + ] }, "properties": { "type": "array", @@ -147021,25 +146201,6 @@ "maxItems": 32, "minItems": 32, "nullable": true - } - } - }, - { - "type": "object", - "required": [ - "computed", - "end", - "object", - "property", - "start", - "type" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "MemberExpression" - ] }, "start": { "type": "integer", @@ -147050,6 +146211,23 @@ "type": "integer", "format": "uint", "minimum": 0.0 + } + } + }, + { + "type": "object", + "required": [ + "computed", + "object", + "property", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "MemberExpression" + ] }, "object": { "$ref": "#/components/schemas/MemberObject" @@ -147070,24 +146248,6 @@ "maxItems": 32, "minItems": 32, "nullable": true - } - } - }, - { - "type": "object", - "required": [ - "argument", - "end", - "operator", - "start", - "type" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "UnaryExpression" - ] }, "start": { "type": "integer", @@ -147098,6 +146258,22 @@ "type": "integer", "format": "uint", "minimum": 0.0 + } + } + }, + { + "type": "object", + "required": [ + "argument", + "operator", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "UnaryExpression" + ] }, "operator": { "$ref": "#/components/schemas/UnaryOperator" @@ -147115,26 +146291,6 @@ "maxItems": 32, "minItems": 32, "nullable": true - } - } - }, - { - "type": "object", - "required": [ - "cond", - "else_ifs", - "end", - "final_else", - "start", - "then_val", - "type" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "IfExpression" - ] }, "start": { "type": "integer", @@ -147145,6 +146301,24 @@ "type": "integer", "format": "uint", "minimum": 0.0 + } + } + }, + { + "type": "object", + "required": [ + "cond", + "else_ifs", + "final_else", + "then_val", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "IfExpression" + ] }, "cond": { "$ref": "#/components/schemas/Expr" @@ -147171,6 +146345,16 @@ "maxItems": 32, "minItems": 32, "nullable": true + }, + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 } } }, @@ -147314,9 +146498,7 @@ { "type": "object", "required": [ - "end", "raw", - "start", "type", "value" ], @@ -147327,16 +146509,6 @@ "Literal" ] }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, "value": { "$ref": "#/components/schemas/LiteralValue" }, @@ -147353,23 +146525,6 @@ "maxItems": 32, "minItems": 32, "nullable": true - } - } - }, - { - "type": "object", - "required": [ - "end", - "name", - "start", - "type" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "Identifier" - ] }, "start": { "type": "integer", @@ -147380,6 +146535,21 @@ "type": "integer", "format": "uint", "minimum": 0.0 + } + } + }, + { + "type": "object", + "required": [ + "name", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Identifier" + ] }, "name": { "type": "string" @@ -147394,25 +146564,6 @@ "maxItems": 32, "minItems": 32, "nullable": true - } - } - }, - { - "type": "object", - "required": [ - "end", - "left", - "operator", - "right", - "start", - "type" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "BinaryExpression" - ] }, "start": { "type": "integer", @@ -147423,6 +146574,23 @@ "type": "integer", "format": "uint", "minimum": 0.0 + } + } + }, + { + "type": "object", + "required": [ + "left", + "operator", + "right", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "BinaryExpression" + ] }, "operator": { "$ref": "#/components/schemas/BinaryOperator" @@ -147443,25 +146611,6 @@ "maxItems": 32, "minItems": 32, "nullable": true - } - } - }, - { - "type": "object", - "required": [ - "arguments", - "callee", - "end", - "optional", - "start", - "type" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "CallExpression" - ] }, "start": { "type": "integer", @@ -147472,6 +146621,23 @@ "type": "integer", "format": "uint", "minimum": 0.0 + } + } + }, + { + "type": "object", + "required": [ + "arguments", + "callee", + "optional", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "CallExpression" + ] }, "callee": { "$ref": "#/components/schemas/Identifier" @@ -147495,24 +146661,6 @@ "maxItems": 32, "minItems": 32, "nullable": true - } - } - }, - { - "type": "object", - "required": [ - "argument", - "end", - "operator", - "start", - "type" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "UnaryExpression" - ] }, "start": { "type": "integer", @@ -147523,6 +146671,22 @@ "type": "integer", "format": "uint", "minimum": 0.0 + } + } + }, + { + "type": "object", + "required": [ + "argument", + "operator", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "UnaryExpression" + ] }, "operator": { "$ref": "#/components/schemas/UnaryOperator" @@ -147540,25 +146704,6 @@ "maxItems": 32, "minItems": 32, "nullable": true - } - } - }, - { - "type": "object", - "required": [ - "computed", - "end", - "object", - "property", - "start", - "type" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "MemberExpression" - ] }, "start": { "type": "integer", @@ -147569,6 +146714,23 @@ "type": "integer", "format": "uint", "minimum": 0.0 + } + } + }, + { + "type": "object", + "required": [ + "computed", + "object", + "property", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "MemberExpression" + ] }, "object": { "$ref": "#/components/schemas/MemberObject" @@ -147589,26 +146751,6 @@ "maxItems": 32, "minItems": 32, "nullable": true - } - } - }, - { - "type": "object", - "required": [ - "cond", - "else_ifs", - "end", - "final_else", - "start", - "then_val", - "type" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "IfExpression" - ] }, "start": { "type": "integer", @@ -147619,6 +146761,24 @@ "type": "integer", "format": "uint", "minimum": 0.0 + } + } + }, + { + "type": "object", + "required": [ + "cond", + "else_ifs", + "final_else", + "then_val", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "IfExpression" + ] }, "cond": { "$ref": "#/components/schemas/Expr" @@ -147645,6 +146805,16 @@ "maxItems": 32, "minItems": 32, "nullable": true + }, + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 } } } @@ -147674,10 +146844,8 @@ "type": "object", "required": [ "computed", - "end", "object", "property", - "start", "type" ], "properties": { @@ -147687,16 +146855,6 @@ "MemberExpression" ] }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, "object": { "$ref": "#/components/schemas/MemberObject" }, @@ -147716,23 +146874,6 @@ "maxItems": 32, "minItems": 32, "nullable": true - } - } - }, - { - "type": "object", - "required": [ - "end", - "name", - "start", - "type" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "Identifier" - ] }, "start": { "type": "integer", @@ -147743,6 +146884,21 @@ "type": "integer", "format": "uint", "minimum": 0.0 + } + } + }, + { + "type": "object", + "required": [ + "name", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Identifier" + ] }, "name": { "type": "string" @@ -147757,6 +146913,16 @@ "maxItems": 32, "minItems": 32, "nullable": true + }, + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 } } } @@ -147767,9 +146933,7 @@ { "type": "object", "required": [ - "end", "name", - "start", "type" ], "properties": { @@ -147779,16 +146943,6 @@ "Identifier" ] }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, "name": { "type": "string" }, @@ -147802,24 +146956,6 @@ "maxItems": 32, "minItems": 32, "nullable": true - } - } - }, - { - "type": "object", - "required": [ - "end", - "raw", - "start", - "type", - "value" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "Literal" - ] }, "start": { "type": "integer", @@ -147830,6 +146966,22 @@ "type": "integer", "format": "uint", "minimum": 0.0 + } + } + }, + { + "type": "object", + "required": [ + "raw", + "type", + "value" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Literal" + ] }, "value": { "$ref": "#/components/schemas/LiteralValue" @@ -147847,6 +146999,16 @@ "maxItems": 32, "minItems": 32, "nullable": true + }, + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 } } } @@ -147856,21 +147018,9 @@ "type": "object", "required": [ "cond", - "end", - "start", "then_val" ], "properties": { - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, "cond": { "$ref": "#/components/schemas/Expr" }, @@ -147887,6 +147037,16 @@ "maxItems": 32, "minItems": 32, "nullable": true + }, + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 } } }, @@ -147894,7 +147054,7 @@ "type": "object", "required": [ "nonCodeNodes", - "start" + "startNodes" ], "properties": { "nonCodeNodes": { @@ -147906,7 +147066,7 @@ } } }, - "start": { + "startNodes": { "type": "array", "items": { "$ref": "#/components/schemas/NonCodeNode" @@ -147928,21 +147088,9 @@ "NonCodeNode": { "type": "object", "required": [ - "end", - "start", "value" ], "properties": { - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, "value": { "$ref": "#/components/schemas/NonCodeValue" }, @@ -147956,6 +147104,16 @@ "maxItems": 32, "minItems": 32, "nullable": true + }, + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 } } }, @@ -148086,22 +147244,10 @@ "ObjectProperty": { "type": "object", "required": [ - "end", "key", - "start", "value" ], "properties": { - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, "key": { "$ref": "#/components/schemas/Identifier" }, @@ -148118,18 +147264,7 @@ "maxItems": 32, "minItems": 32, "nullable": true - } - } - }, - "VariableDeclarator": { - "type": "object", - "required": [ - "end", - "id", - "init", - "start" - ], - "properties": { + }, "start": { "type": "integer", "format": "uint", @@ -148139,7 +147274,16 @@ "type": "integer", "format": "uint", "minimum": 0.0 - }, + } + } + }, + "VariableDeclarator": { + "type": "object", + "required": [ + "id", + "init" + ], + "properties": { "id": { "description": "The identifier of the variable.", "allOf": [ @@ -148166,6 +147310,16 @@ "maxItems": 32, "minItems": 32, "nullable": true + }, + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 } } }, @@ -148208,7 +147362,9 @@ } }, "currentEnv": { - "$ref": "#/components/schemas/EnvironmentRef" + "type": "integer", + "format": "uint", + "minimum": 0.0 }, "return": { "allOf": [ @@ -148233,20 +147389,12 @@ } }, "parent": { - "allOf": [ - { - "$ref": "#/components/schemas/EnvironmentRef" - } - ], + "type": "integer", + "format": "uint", + "minimum": 0.0, "nullable": true } } - }, - "EnvironmentRef": { - "description": "An index pointing to an environment.", - "type": "integer", - "format": "uint", - "minimum": 0.0 } } }, @@ -148322,8 +147470,6 @@ { "type": "object", "required": [ - "end", - "start", "type", "value" ], @@ -148334,16 +147480,6 @@ "TagDeclarator" ] }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, "value": { "type": "string" }, @@ -148357,6 +147493,16 @@ "maxItems": 32, "minItems": 32, "nullable": true + }, + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 } } }, @@ -149258,21 +148404,9 @@ "TagDeclarator": { "type": "object", "required": [ - "end", - "start", "value" ], "properties": { - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, "value": { "type": "string" }, @@ -149286,6 +148420,16 @@ "maxItems": 32, "minItems": 32, "nullable": true + }, + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 } } }, @@ -149963,21 +149107,9 @@ "type": "object", "required": [ "body", - "end", - "params", - "start" + "params" ], "properties": { - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, "params": { "type": "array", "items": { @@ -149997,6 +149129,16 @@ "maxItems": 32, "minItems": 32, "nullable": true + }, + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 } } }, @@ -150036,21 +149178,9 @@ "Identifier": { "type": "object", "required": [ - "end", - "name", - "start" + "name" ], "properties": { - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, "name": { "type": "string" }, @@ -150064,18 +149194,7 @@ "maxItems": 32, "minItems": 32, "nullable": true - } - } - }, - "Program": { - "description": "A KCL program top level, or function body.", - "type": "object", - "required": [ - "body", - "end", - "start" - ], - "properties": { + }, "start": { "type": "integer", "format": "uint", @@ -150085,7 +149204,16 @@ "type": "integer", "format": "uint", "minimum": 0.0 - }, + } + } + }, + "Program": { + "description": "A KCL program top level, or function body.", + "type": "object", + "required": [ + "body" + ], + "properties": { "body": { "type": "array", "items": { @@ -150105,6 +149233,16 @@ "maxItems": 32, "minItems": 32, "nullable": true + }, + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 } } }, @@ -150113,11 +149251,9 @@ { "type": "object", "required": [ - "end", "items", "path", "raw_path", - "start", "type" ], "properties": { @@ -150127,16 +149263,6 @@ "ImportStatement" ] }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, "items": { "type": "array", "items": { @@ -150159,23 +149285,6 @@ "maxItems": 32, "minItems": 32, "nullable": true - } - } - }, - { - "type": "object", - "required": [ - "end", - "expression", - "start", - "type" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "ExpressionStatement" - ] }, "start": { "type": "integer", @@ -150186,6 +149295,21 @@ "type": "integer", "format": "uint", "minimum": 0.0 + } + } + }, + { + "type": "object", + "required": [ + "expression", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "ExpressionStatement" + ] }, "expression": { "$ref": "#/components/schemas/Expr" @@ -150200,24 +149324,6 @@ "maxItems": 32, "minItems": 32, "nullable": true - } - } - }, - { - "type": "object", - "required": [ - "declarations", - "end", - "kind", - "start", - "type" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "VariableDeclaration" - ] }, "start": { "type": "integer", @@ -150228,6 +149334,22 @@ "type": "integer", "format": "uint", "minimum": 0.0 + } + } + }, + { + "type": "object", + "required": [ + "declarations", + "kind", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "VariableDeclaration" + ] }, "declarations": { "type": "array", @@ -150251,23 +149373,6 @@ "maxItems": 32, "minItems": 32, "nullable": true - } - } - }, - { - "type": "object", - "required": [ - "argument", - "end", - "start", - "type" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "ReturnStatement" - ] }, "start": { "type": "integer", @@ -150278,6 +149383,21 @@ "type": "integer", "format": "uint", "minimum": 0.0 + } + } + }, + { + "type": "object", + "required": [ + "argument", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "ReturnStatement" + ] }, "argument": { "$ref": "#/components/schemas/Expr" @@ -150292,6 +149412,16 @@ "maxItems": 32, "minItems": 32, "nullable": true + }, + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 } } } @@ -150300,9 +149430,7 @@ "ImportItem": { "type": "object", "required": [ - "end", - "name", - "start" + "name" ], "properties": { "name": { @@ -150322,16 +149450,6 @@ ], "nullable": true }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, "digest": { "type": "array", "items": { @@ -150342,6 +149460,16 @@ "maxItems": 32, "minItems": 32, "nullable": true + }, + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 } } }, @@ -150351,9 +149479,7 @@ { "type": "object", "required": [ - "end", "raw", - "start", "type", "value" ], @@ -150364,16 +149490,6 @@ "Literal" ] }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, "value": { "$ref": "#/components/schemas/LiteralValue" }, @@ -150390,23 +149506,6 @@ "maxItems": 32, "minItems": 32, "nullable": true - } - } - }, - { - "type": "object", - "required": [ - "end", - "name", - "start", - "type" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "Identifier" - ] }, "start": { "type": "integer", @@ -150417,6 +149516,21 @@ "type": "integer", "format": "uint", "minimum": 0.0 + } + } + }, + { + "type": "object", + "required": [ + "name", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Identifier" + ] }, "name": { "type": "string" @@ -150431,23 +149545,6 @@ "maxItems": 32, "minItems": 32, "nullable": true - } - } - }, - { - "type": "object", - "required": [ - "end", - "start", - "type", - "value" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "TagDeclarator" - ] }, "start": { "type": "integer", @@ -150458,6 +149555,21 @@ "type": "integer", "format": "uint", "minimum": 0.0 + } + } + }, + { + "type": "object", + "required": [ + "type", + "value" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "TagDeclarator" + ] }, "value": { "type": "string" @@ -150472,25 +149584,6 @@ "maxItems": 32, "minItems": 32, "nullable": true - } - } - }, - { - "type": "object", - "required": [ - "end", - "left", - "operator", - "right", - "start", - "type" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "BinaryExpression" - ] }, "start": { "type": "integer", @@ -150501,6 +149594,23 @@ "type": "integer", "format": "uint", "minimum": 0.0 + } + } + }, + { + "type": "object", + "required": [ + "left", + "operator", + "right", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "BinaryExpression" + ] }, "operator": { "$ref": "#/components/schemas/BinaryOperator" @@ -150521,24 +149631,6 @@ "maxItems": 32, "minItems": 32, "nullable": true - } - } - }, - { - "type": "object", - "required": [ - "body", - "end", - "params", - "start", - "type" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "FunctionExpression" - ] }, "start": { "type": "integer", @@ -150549,6 +149641,22 @@ "type": "integer", "format": "uint", "minimum": 0.0 + } + } + }, + { + "type": "object", + "required": [ + "body", + "params", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "FunctionExpression" + ] }, "params": { "type": "array", @@ -150569,25 +149677,6 @@ "maxItems": 32, "minItems": 32, "nullable": true - } - } - }, - { - "type": "object", - "required": [ - "arguments", - "callee", - "end", - "optional", - "start", - "type" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "CallExpression" - ] }, "start": { "type": "integer", @@ -150598,6 +149687,23 @@ "type": "integer", "format": "uint", "minimum": 0.0 + } + } + }, + { + "type": "object", + "required": [ + "arguments", + "callee", + "optional", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "CallExpression" + ] }, "callee": { "$ref": "#/components/schemas/Identifier" @@ -150621,23 +149727,6 @@ "maxItems": 32, "minItems": 32, "nullable": true - } - } - }, - { - "type": "object", - "required": [ - "body", - "end", - "start", - "type" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "PipeExpression" - ] }, "start": { "type": "integer", @@ -150648,6 +149737,21 @@ "type": "integer", "format": "uint", "minimum": 0.0 + } + } + }, + { + "type": "object", + "required": [ + "body", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "PipeExpression" + ] }, "body": { "type": "array", @@ -150668,22 +149772,6 @@ "maxItems": 32, "minItems": 32, "nullable": true - } - } - }, - { - "type": "object", - "required": [ - "end", - "start", - "type" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "PipeSubstitution" - ] }, "start": { "type": "integer", @@ -150694,6 +149782,20 @@ "type": "integer", "format": "uint", "minimum": 0.0 + } + } + }, + { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "PipeSubstitution" + ] }, "digest": { "type": "array", @@ -150705,23 +149807,6 @@ "maxItems": 32, "minItems": 32, "nullable": true - } - } - }, - { - "type": "object", - "required": [ - "elements", - "end", - "start", - "type" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "ArrayExpression" - ] }, "start": { "type": "integer", @@ -150732,6 +149817,21 @@ "type": "integer", "format": "uint", "minimum": 0.0 + } + } + }, + { + "type": "object", + "required": [ + "elements", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "ArrayExpression" + ] }, "elements": { "type": "array", @@ -150752,25 +149852,6 @@ "maxItems": 32, "minItems": 32, "nullable": true - } - } - }, - { - "type": "object", - "required": [ - "end", - "endElement", - "endInclusive", - "start", - "startElement", - "type" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "ArrayRangeExpression" - ] }, "start": { "type": "integer", @@ -150781,6 +149862,23 @@ "type": "integer", "format": "uint", "minimum": 0.0 + } + } + }, + { + "type": "object", + "required": [ + "endElement", + "endInclusive", + "startElement", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "ArrayRangeExpression" + ] }, "startElement": { "$ref": "#/components/schemas/Expr" @@ -150802,23 +149900,6 @@ "maxItems": 32, "minItems": 32, "nullable": true - } - } - }, - { - "type": "object", - "required": [ - "end", - "properties", - "start", - "type" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "ObjectExpression" - ] }, "start": { "type": "integer", @@ -150829,6 +149910,21 @@ "type": "integer", "format": "uint", "minimum": 0.0 + } + } + }, + { + "type": "object", + "required": [ + "properties", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "ObjectExpression" + ] }, "properties": { "type": "array", @@ -150849,25 +149945,6 @@ "maxItems": 32, "minItems": 32, "nullable": true - } - } - }, - { - "type": "object", - "required": [ - "computed", - "end", - "object", - "property", - "start", - "type" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "MemberExpression" - ] }, "start": { "type": "integer", @@ -150878,6 +149955,23 @@ "type": "integer", "format": "uint", "minimum": 0.0 + } + } + }, + { + "type": "object", + "required": [ + "computed", + "object", + "property", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "MemberExpression" + ] }, "object": { "$ref": "#/components/schemas/MemberObject" @@ -150898,24 +149992,6 @@ "maxItems": 32, "minItems": 32, "nullable": true - } - } - }, - { - "type": "object", - "required": [ - "argument", - "end", - "operator", - "start", - "type" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "UnaryExpression" - ] }, "start": { "type": "integer", @@ -150926,6 +150002,22 @@ "type": "integer", "format": "uint", "minimum": 0.0 + } + } + }, + { + "type": "object", + "required": [ + "argument", + "operator", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "UnaryExpression" + ] }, "operator": { "$ref": "#/components/schemas/UnaryOperator" @@ -150943,26 +150035,6 @@ "maxItems": 32, "minItems": 32, "nullable": true - } - } - }, - { - "type": "object", - "required": [ - "cond", - "else_ifs", - "end", - "final_else", - "start", - "then_val", - "type" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "IfExpression" - ] }, "start": { "type": "integer", @@ -150973,6 +150045,24 @@ "type": "integer", "format": "uint", "minimum": 0.0 + } + } + }, + { + "type": "object", + "required": [ + "cond", + "else_ifs", + "final_else", + "then_val", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "IfExpression" + ] }, "cond": { "$ref": "#/components/schemas/Expr" @@ -150999,6 +150089,16 @@ "maxItems": 32, "minItems": 32, "nullable": true + }, + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 } } }, @@ -151142,9 +150242,7 @@ { "type": "object", "required": [ - "end", "raw", - "start", "type", "value" ], @@ -151155,16 +150253,6 @@ "Literal" ] }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, "value": { "$ref": "#/components/schemas/LiteralValue" }, @@ -151181,23 +150269,6 @@ "maxItems": 32, "minItems": 32, "nullable": true - } - } - }, - { - "type": "object", - "required": [ - "end", - "name", - "start", - "type" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "Identifier" - ] }, "start": { "type": "integer", @@ -151208,6 +150279,21 @@ "type": "integer", "format": "uint", "minimum": 0.0 + } + } + }, + { + "type": "object", + "required": [ + "name", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Identifier" + ] }, "name": { "type": "string" @@ -151222,25 +150308,6 @@ "maxItems": 32, "minItems": 32, "nullable": true - } - } - }, - { - "type": "object", - "required": [ - "end", - "left", - "operator", - "right", - "start", - "type" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "BinaryExpression" - ] }, "start": { "type": "integer", @@ -151251,6 +150318,23 @@ "type": "integer", "format": "uint", "minimum": 0.0 + } + } + }, + { + "type": "object", + "required": [ + "left", + "operator", + "right", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "BinaryExpression" + ] }, "operator": { "$ref": "#/components/schemas/BinaryOperator" @@ -151271,25 +150355,6 @@ "maxItems": 32, "minItems": 32, "nullable": true - } - } - }, - { - "type": "object", - "required": [ - "arguments", - "callee", - "end", - "optional", - "start", - "type" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "CallExpression" - ] }, "start": { "type": "integer", @@ -151300,6 +150365,23 @@ "type": "integer", "format": "uint", "minimum": 0.0 + } + } + }, + { + "type": "object", + "required": [ + "arguments", + "callee", + "optional", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "CallExpression" + ] }, "callee": { "$ref": "#/components/schemas/Identifier" @@ -151323,24 +150405,6 @@ "maxItems": 32, "minItems": 32, "nullable": true - } - } - }, - { - "type": "object", - "required": [ - "argument", - "end", - "operator", - "start", - "type" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "UnaryExpression" - ] }, "start": { "type": "integer", @@ -151351,6 +150415,22 @@ "type": "integer", "format": "uint", "minimum": 0.0 + } + } + }, + { + "type": "object", + "required": [ + "argument", + "operator", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "UnaryExpression" + ] }, "operator": { "$ref": "#/components/schemas/UnaryOperator" @@ -151368,25 +150448,6 @@ "maxItems": 32, "minItems": 32, "nullable": true - } - } - }, - { - "type": "object", - "required": [ - "computed", - "end", - "object", - "property", - "start", - "type" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "MemberExpression" - ] }, "start": { "type": "integer", @@ -151397,6 +150458,23 @@ "type": "integer", "format": "uint", "minimum": 0.0 + } + } + }, + { + "type": "object", + "required": [ + "computed", + "object", + "property", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "MemberExpression" + ] }, "object": { "$ref": "#/components/schemas/MemberObject" @@ -151417,26 +150495,6 @@ "maxItems": 32, "minItems": 32, "nullable": true - } - } - }, - { - "type": "object", - "required": [ - "cond", - "else_ifs", - "end", - "final_else", - "start", - "then_val", - "type" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "IfExpression" - ] }, "start": { "type": "integer", @@ -151447,6 +150505,24 @@ "type": "integer", "format": "uint", "minimum": 0.0 + } + } + }, + { + "type": "object", + "required": [ + "cond", + "else_ifs", + "final_else", + "then_val", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "IfExpression" + ] }, "cond": { "$ref": "#/components/schemas/Expr" @@ -151473,6 +150549,16 @@ "maxItems": 32, "minItems": 32, "nullable": true + }, + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 } } } @@ -151502,10 +150588,8 @@ "type": "object", "required": [ "computed", - "end", "object", "property", - "start", "type" ], "properties": { @@ -151515,16 +150599,6 @@ "MemberExpression" ] }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, "object": { "$ref": "#/components/schemas/MemberObject" }, @@ -151544,23 +150618,6 @@ "maxItems": 32, "minItems": 32, "nullable": true - } - } - }, - { - "type": "object", - "required": [ - "end", - "name", - "start", - "type" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "Identifier" - ] }, "start": { "type": "integer", @@ -151571,6 +150628,21 @@ "type": "integer", "format": "uint", "minimum": 0.0 + } + } + }, + { + "type": "object", + "required": [ + "name", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Identifier" + ] }, "name": { "type": "string" @@ -151585,6 +150657,16 @@ "maxItems": 32, "minItems": 32, "nullable": true + }, + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 } } } @@ -151595,9 +150677,7 @@ { "type": "object", "required": [ - "end", "name", - "start", "type" ], "properties": { @@ -151607,16 +150687,6 @@ "Identifier" ] }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, "name": { "type": "string" }, @@ -151630,24 +150700,6 @@ "maxItems": 32, "minItems": 32, "nullable": true - } - } - }, - { - "type": "object", - "required": [ - "end", - "raw", - "start", - "type", - "value" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "Literal" - ] }, "start": { "type": "integer", @@ -151658,6 +150710,22 @@ "type": "integer", "format": "uint", "minimum": 0.0 + } + } + }, + { + "type": "object", + "required": [ + "raw", + "type", + "value" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Literal" + ] }, "value": { "$ref": "#/components/schemas/LiteralValue" @@ -151675,6 +150743,16 @@ "maxItems": 32, "minItems": 32, "nullable": true + }, + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 } } } @@ -151684,21 +150762,9 @@ "type": "object", "required": [ "cond", - "end", - "start", "then_val" ], "properties": { - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, "cond": { "$ref": "#/components/schemas/Expr" }, @@ -151715,6 +150781,16 @@ "maxItems": 32, "minItems": 32, "nullable": true + }, + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 } } }, @@ -151722,7 +150798,7 @@ "type": "object", "required": [ "nonCodeNodes", - "start" + "startNodes" ], "properties": { "nonCodeNodes": { @@ -151734,7 +150810,7 @@ } } }, - "start": { + "startNodes": { "type": "array", "items": { "$ref": "#/components/schemas/NonCodeNode" @@ -151756,21 +150832,9 @@ "NonCodeNode": { "type": "object", "required": [ - "end", - "start", "value" ], "properties": { - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, "value": { "$ref": "#/components/schemas/NonCodeValue" }, @@ -151784,6 +150848,16 @@ "maxItems": 32, "minItems": 32, "nullable": true + }, + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 } } }, @@ -151914,22 +150988,10 @@ "ObjectProperty": { "type": "object", "required": [ - "end", "key", - "start", "value" ], "properties": { - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, "key": { "$ref": "#/components/schemas/Identifier" }, @@ -151946,18 +151008,7 @@ "maxItems": 32, "minItems": 32, "nullable": true - } - } - }, - "VariableDeclarator": { - "type": "object", - "required": [ - "end", - "id", - "init", - "start" - ], - "properties": { + }, "start": { "type": "integer", "format": "uint", @@ -151967,7 +151018,16 @@ "type": "integer", "format": "uint", "minimum": 0.0 - }, + } + } + }, + "VariableDeclarator": { + "type": "object", + "required": [ + "id", + "init" + ], + "properties": { "id": { "description": "The identifier of the variable.", "allOf": [ @@ -151994,6 +151054,16 @@ "maxItems": 32, "minItems": 32, "nullable": true + }, + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 } } }, @@ -152036,7 +151106,9 @@ } }, "currentEnv": { - "$ref": "#/components/schemas/EnvironmentRef" + "type": "integer", + "format": "uint", + "minimum": 0.0 }, "return": { "allOf": [ @@ -152061,20 +151133,12 @@ } }, "parent": { - "allOf": [ - { - "$ref": "#/components/schemas/EnvironmentRef" - } - ], + "type": "integer", + "format": "uint", + "minimum": 0.0, "nullable": true } } - }, - "EnvironmentRef": { - "description": "An index pointing to an environment.", - "type": "integer", - "format": "uint", - "minimum": 0.0 } } }, @@ -152148,8 +151212,6 @@ { "type": "object", "required": [ - "end", - "start", "type", "value" ], @@ -152160,16 +151222,6 @@ "TagDeclarator" ] }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, "value": { "type": "string" }, @@ -152183,6 +151235,16 @@ "maxItems": 32, "minItems": 32, "nullable": true + }, + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 } } }, @@ -153084,21 +152146,9 @@ "TagDeclarator": { "type": "object", "required": [ - "end", - "start", "value" ], "properties": { - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, "value": { "type": "string" }, @@ -153112,6 +152162,16 @@ "maxItems": 32, "minItems": 32, "nullable": true + }, + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 } } }, @@ -153789,21 +152849,9 @@ "type": "object", "required": [ "body", - "end", - "params", - "start" + "params" ], "properties": { - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, "params": { "type": "array", "items": { @@ -153823,6 +152871,16 @@ "maxItems": 32, "minItems": 32, "nullable": true + }, + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 } } }, @@ -153862,21 +152920,9 @@ "Identifier": { "type": "object", "required": [ - "end", - "name", - "start" + "name" ], "properties": { - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, "name": { "type": "string" }, @@ -153890,18 +152936,7 @@ "maxItems": 32, "minItems": 32, "nullable": true - } - } - }, - "Program": { - "description": "A KCL program top level, or function body.", - "type": "object", - "required": [ - "body", - "end", - "start" - ], - "properties": { + }, "start": { "type": "integer", "format": "uint", @@ -153911,7 +152946,16 @@ "type": "integer", "format": "uint", "minimum": 0.0 - }, + } + } + }, + "Program": { + "description": "A KCL program top level, or function body.", + "type": "object", + "required": [ + "body" + ], + "properties": { "body": { "type": "array", "items": { @@ -153931,6 +152975,16 @@ "maxItems": 32, "minItems": 32, "nullable": true + }, + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 } } }, @@ -153939,11 +152993,9 @@ { "type": "object", "required": [ - "end", "items", "path", "raw_path", - "start", "type" ], "properties": { @@ -153953,16 +153005,6 @@ "ImportStatement" ] }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, "items": { "type": "array", "items": { @@ -153985,23 +153027,6 @@ "maxItems": 32, "minItems": 32, "nullable": true - } - } - }, - { - "type": "object", - "required": [ - "end", - "expression", - "start", - "type" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "ExpressionStatement" - ] }, "start": { "type": "integer", @@ -154012,6 +153037,21 @@ "type": "integer", "format": "uint", "minimum": 0.0 + } + } + }, + { + "type": "object", + "required": [ + "expression", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "ExpressionStatement" + ] }, "expression": { "$ref": "#/components/schemas/Expr" @@ -154026,24 +153066,6 @@ "maxItems": 32, "minItems": 32, "nullable": true - } - } - }, - { - "type": "object", - "required": [ - "declarations", - "end", - "kind", - "start", - "type" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "VariableDeclaration" - ] }, "start": { "type": "integer", @@ -154054,6 +153076,22 @@ "type": "integer", "format": "uint", "minimum": 0.0 + } + } + }, + { + "type": "object", + "required": [ + "declarations", + "kind", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "VariableDeclaration" + ] }, "declarations": { "type": "array", @@ -154077,23 +153115,6 @@ "maxItems": 32, "minItems": 32, "nullable": true - } - } - }, - { - "type": "object", - "required": [ - "argument", - "end", - "start", - "type" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "ReturnStatement" - ] }, "start": { "type": "integer", @@ -154104,6 +153125,21 @@ "type": "integer", "format": "uint", "minimum": 0.0 + } + } + }, + { + "type": "object", + "required": [ + "argument", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "ReturnStatement" + ] }, "argument": { "$ref": "#/components/schemas/Expr" @@ -154118,6 +153154,16 @@ "maxItems": 32, "minItems": 32, "nullable": true + }, + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 } } } @@ -154126,9 +153172,7 @@ "ImportItem": { "type": "object", "required": [ - "end", - "name", - "start" + "name" ], "properties": { "name": { @@ -154148,16 +153192,6 @@ ], "nullable": true }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, "digest": { "type": "array", "items": { @@ -154168,6 +153202,16 @@ "maxItems": 32, "minItems": 32, "nullable": true + }, + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 } } }, @@ -154177,9 +153221,7 @@ { "type": "object", "required": [ - "end", "raw", - "start", "type", "value" ], @@ -154190,16 +153232,6 @@ "Literal" ] }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, "value": { "$ref": "#/components/schemas/LiteralValue" }, @@ -154216,23 +153248,6 @@ "maxItems": 32, "minItems": 32, "nullable": true - } - } - }, - { - "type": "object", - "required": [ - "end", - "name", - "start", - "type" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "Identifier" - ] }, "start": { "type": "integer", @@ -154243,6 +153258,21 @@ "type": "integer", "format": "uint", "minimum": 0.0 + } + } + }, + { + "type": "object", + "required": [ + "name", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Identifier" + ] }, "name": { "type": "string" @@ -154257,23 +153287,6 @@ "maxItems": 32, "minItems": 32, "nullable": true - } - } - }, - { - "type": "object", - "required": [ - "end", - "start", - "type", - "value" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "TagDeclarator" - ] }, "start": { "type": "integer", @@ -154284,6 +153297,21 @@ "type": "integer", "format": "uint", "minimum": 0.0 + } + } + }, + { + "type": "object", + "required": [ + "type", + "value" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "TagDeclarator" + ] }, "value": { "type": "string" @@ -154298,25 +153326,6 @@ "maxItems": 32, "minItems": 32, "nullable": true - } - } - }, - { - "type": "object", - "required": [ - "end", - "left", - "operator", - "right", - "start", - "type" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "BinaryExpression" - ] }, "start": { "type": "integer", @@ -154327,6 +153336,23 @@ "type": "integer", "format": "uint", "minimum": 0.0 + } + } + }, + { + "type": "object", + "required": [ + "left", + "operator", + "right", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "BinaryExpression" + ] }, "operator": { "$ref": "#/components/schemas/BinaryOperator" @@ -154347,24 +153373,6 @@ "maxItems": 32, "minItems": 32, "nullable": true - } - } - }, - { - "type": "object", - "required": [ - "body", - "end", - "params", - "start", - "type" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "FunctionExpression" - ] }, "start": { "type": "integer", @@ -154375,6 +153383,22 @@ "type": "integer", "format": "uint", "minimum": 0.0 + } + } + }, + { + "type": "object", + "required": [ + "body", + "params", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "FunctionExpression" + ] }, "params": { "type": "array", @@ -154395,25 +153419,6 @@ "maxItems": 32, "minItems": 32, "nullable": true - } - } - }, - { - "type": "object", - "required": [ - "arguments", - "callee", - "end", - "optional", - "start", - "type" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "CallExpression" - ] }, "start": { "type": "integer", @@ -154424,6 +153429,23 @@ "type": "integer", "format": "uint", "minimum": 0.0 + } + } + }, + { + "type": "object", + "required": [ + "arguments", + "callee", + "optional", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "CallExpression" + ] }, "callee": { "$ref": "#/components/schemas/Identifier" @@ -154447,23 +153469,6 @@ "maxItems": 32, "minItems": 32, "nullable": true - } - } - }, - { - "type": "object", - "required": [ - "body", - "end", - "start", - "type" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "PipeExpression" - ] }, "start": { "type": "integer", @@ -154474,6 +153479,21 @@ "type": "integer", "format": "uint", "minimum": 0.0 + } + } + }, + { + "type": "object", + "required": [ + "body", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "PipeExpression" + ] }, "body": { "type": "array", @@ -154494,22 +153514,6 @@ "maxItems": 32, "minItems": 32, "nullable": true - } - } - }, - { - "type": "object", - "required": [ - "end", - "start", - "type" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "PipeSubstitution" - ] }, "start": { "type": "integer", @@ -154520,6 +153524,20 @@ "type": "integer", "format": "uint", "minimum": 0.0 + } + } + }, + { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "PipeSubstitution" + ] }, "digest": { "type": "array", @@ -154531,23 +153549,6 @@ "maxItems": 32, "minItems": 32, "nullable": true - } - } - }, - { - "type": "object", - "required": [ - "elements", - "end", - "start", - "type" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "ArrayExpression" - ] }, "start": { "type": "integer", @@ -154558,6 +153559,21 @@ "type": "integer", "format": "uint", "minimum": 0.0 + } + } + }, + { + "type": "object", + "required": [ + "elements", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "ArrayExpression" + ] }, "elements": { "type": "array", @@ -154578,25 +153594,6 @@ "maxItems": 32, "minItems": 32, "nullable": true - } - } - }, - { - "type": "object", - "required": [ - "end", - "endElement", - "endInclusive", - "start", - "startElement", - "type" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "ArrayRangeExpression" - ] }, "start": { "type": "integer", @@ -154607,6 +153604,23 @@ "type": "integer", "format": "uint", "minimum": 0.0 + } + } + }, + { + "type": "object", + "required": [ + "endElement", + "endInclusive", + "startElement", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "ArrayRangeExpression" + ] }, "startElement": { "$ref": "#/components/schemas/Expr" @@ -154628,23 +153642,6 @@ "maxItems": 32, "minItems": 32, "nullable": true - } - } - }, - { - "type": "object", - "required": [ - "end", - "properties", - "start", - "type" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "ObjectExpression" - ] }, "start": { "type": "integer", @@ -154655,6 +153652,21 @@ "type": "integer", "format": "uint", "minimum": 0.0 + } + } + }, + { + "type": "object", + "required": [ + "properties", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "ObjectExpression" + ] }, "properties": { "type": "array", @@ -154675,25 +153687,6 @@ "maxItems": 32, "minItems": 32, "nullable": true - } - } - }, - { - "type": "object", - "required": [ - "computed", - "end", - "object", - "property", - "start", - "type" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "MemberExpression" - ] }, "start": { "type": "integer", @@ -154704,6 +153697,23 @@ "type": "integer", "format": "uint", "minimum": 0.0 + } + } + }, + { + "type": "object", + "required": [ + "computed", + "object", + "property", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "MemberExpression" + ] }, "object": { "$ref": "#/components/schemas/MemberObject" @@ -154724,24 +153734,6 @@ "maxItems": 32, "minItems": 32, "nullable": true - } - } - }, - { - "type": "object", - "required": [ - "argument", - "end", - "operator", - "start", - "type" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "UnaryExpression" - ] }, "start": { "type": "integer", @@ -154752,6 +153744,22 @@ "type": "integer", "format": "uint", "minimum": 0.0 + } + } + }, + { + "type": "object", + "required": [ + "argument", + "operator", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "UnaryExpression" + ] }, "operator": { "$ref": "#/components/schemas/UnaryOperator" @@ -154769,26 +153777,6 @@ "maxItems": 32, "minItems": 32, "nullable": true - } - } - }, - { - "type": "object", - "required": [ - "cond", - "else_ifs", - "end", - "final_else", - "start", - "then_val", - "type" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "IfExpression" - ] }, "start": { "type": "integer", @@ -154799,6 +153787,24 @@ "type": "integer", "format": "uint", "minimum": 0.0 + } + } + }, + { + "type": "object", + "required": [ + "cond", + "else_ifs", + "final_else", + "then_val", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "IfExpression" + ] }, "cond": { "$ref": "#/components/schemas/Expr" @@ -154825,6 +153831,16 @@ "maxItems": 32, "minItems": 32, "nullable": true + }, + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 } } }, @@ -154968,9 +153984,7 @@ { "type": "object", "required": [ - "end", "raw", - "start", "type", "value" ], @@ -154981,16 +153995,6 @@ "Literal" ] }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, "value": { "$ref": "#/components/schemas/LiteralValue" }, @@ -155007,23 +154011,6 @@ "maxItems": 32, "minItems": 32, "nullable": true - } - } - }, - { - "type": "object", - "required": [ - "end", - "name", - "start", - "type" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "Identifier" - ] }, "start": { "type": "integer", @@ -155034,6 +154021,21 @@ "type": "integer", "format": "uint", "minimum": 0.0 + } + } + }, + { + "type": "object", + "required": [ + "name", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Identifier" + ] }, "name": { "type": "string" @@ -155048,25 +154050,6 @@ "maxItems": 32, "minItems": 32, "nullable": true - } - } - }, - { - "type": "object", - "required": [ - "end", - "left", - "operator", - "right", - "start", - "type" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "BinaryExpression" - ] }, "start": { "type": "integer", @@ -155077,6 +154060,23 @@ "type": "integer", "format": "uint", "minimum": 0.0 + } + } + }, + { + "type": "object", + "required": [ + "left", + "operator", + "right", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "BinaryExpression" + ] }, "operator": { "$ref": "#/components/schemas/BinaryOperator" @@ -155097,25 +154097,6 @@ "maxItems": 32, "minItems": 32, "nullable": true - } - } - }, - { - "type": "object", - "required": [ - "arguments", - "callee", - "end", - "optional", - "start", - "type" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "CallExpression" - ] }, "start": { "type": "integer", @@ -155126,6 +154107,23 @@ "type": "integer", "format": "uint", "minimum": 0.0 + } + } + }, + { + "type": "object", + "required": [ + "arguments", + "callee", + "optional", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "CallExpression" + ] }, "callee": { "$ref": "#/components/schemas/Identifier" @@ -155149,24 +154147,6 @@ "maxItems": 32, "minItems": 32, "nullable": true - } - } - }, - { - "type": "object", - "required": [ - "argument", - "end", - "operator", - "start", - "type" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "UnaryExpression" - ] }, "start": { "type": "integer", @@ -155177,6 +154157,22 @@ "type": "integer", "format": "uint", "minimum": 0.0 + } + } + }, + { + "type": "object", + "required": [ + "argument", + "operator", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "UnaryExpression" + ] }, "operator": { "$ref": "#/components/schemas/UnaryOperator" @@ -155194,25 +154190,6 @@ "maxItems": 32, "minItems": 32, "nullable": true - } - } - }, - { - "type": "object", - "required": [ - "computed", - "end", - "object", - "property", - "start", - "type" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "MemberExpression" - ] }, "start": { "type": "integer", @@ -155223,6 +154200,23 @@ "type": "integer", "format": "uint", "minimum": 0.0 + } + } + }, + { + "type": "object", + "required": [ + "computed", + "object", + "property", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "MemberExpression" + ] }, "object": { "$ref": "#/components/schemas/MemberObject" @@ -155243,26 +154237,6 @@ "maxItems": 32, "minItems": 32, "nullable": true - } - } - }, - { - "type": "object", - "required": [ - "cond", - "else_ifs", - "end", - "final_else", - "start", - "then_val", - "type" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "IfExpression" - ] }, "start": { "type": "integer", @@ -155273,6 +154247,24 @@ "type": "integer", "format": "uint", "minimum": 0.0 + } + } + }, + { + "type": "object", + "required": [ + "cond", + "else_ifs", + "final_else", + "then_val", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "IfExpression" + ] }, "cond": { "$ref": "#/components/schemas/Expr" @@ -155299,6 +154291,16 @@ "maxItems": 32, "minItems": 32, "nullable": true + }, + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 } } } @@ -155328,10 +154330,8 @@ "type": "object", "required": [ "computed", - "end", "object", "property", - "start", "type" ], "properties": { @@ -155341,16 +154341,6 @@ "MemberExpression" ] }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, "object": { "$ref": "#/components/schemas/MemberObject" }, @@ -155370,23 +154360,6 @@ "maxItems": 32, "minItems": 32, "nullable": true - } - } - }, - { - "type": "object", - "required": [ - "end", - "name", - "start", - "type" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "Identifier" - ] }, "start": { "type": "integer", @@ -155397,6 +154370,21 @@ "type": "integer", "format": "uint", "minimum": 0.0 + } + } + }, + { + "type": "object", + "required": [ + "name", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Identifier" + ] }, "name": { "type": "string" @@ -155411,6 +154399,16 @@ "maxItems": 32, "minItems": 32, "nullable": true + }, + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 } } } @@ -155421,9 +154419,7 @@ { "type": "object", "required": [ - "end", "name", - "start", "type" ], "properties": { @@ -155433,16 +154429,6 @@ "Identifier" ] }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, "name": { "type": "string" }, @@ -155456,24 +154442,6 @@ "maxItems": 32, "minItems": 32, "nullable": true - } - } - }, - { - "type": "object", - "required": [ - "end", - "raw", - "start", - "type", - "value" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "Literal" - ] }, "start": { "type": "integer", @@ -155484,6 +154452,22 @@ "type": "integer", "format": "uint", "minimum": 0.0 + } + } + }, + { + "type": "object", + "required": [ + "raw", + "type", + "value" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Literal" + ] }, "value": { "$ref": "#/components/schemas/LiteralValue" @@ -155501,6 +154485,16 @@ "maxItems": 32, "minItems": 32, "nullable": true + }, + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 } } } @@ -155510,21 +154504,9 @@ "type": "object", "required": [ "cond", - "end", - "start", "then_val" ], "properties": { - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, "cond": { "$ref": "#/components/schemas/Expr" }, @@ -155541,6 +154523,16 @@ "maxItems": 32, "minItems": 32, "nullable": true + }, + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 } } }, @@ -155548,7 +154540,7 @@ "type": "object", "required": [ "nonCodeNodes", - "start" + "startNodes" ], "properties": { "nonCodeNodes": { @@ -155560,7 +154552,7 @@ } } }, - "start": { + "startNodes": { "type": "array", "items": { "$ref": "#/components/schemas/NonCodeNode" @@ -155582,21 +154574,9 @@ "NonCodeNode": { "type": "object", "required": [ - "end", - "start", "value" ], "properties": { - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, "value": { "$ref": "#/components/schemas/NonCodeValue" }, @@ -155610,6 +154590,16 @@ "maxItems": 32, "minItems": 32, "nullable": true + }, + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 } } }, @@ -155740,22 +154730,10 @@ "ObjectProperty": { "type": "object", "required": [ - "end", "key", - "start", "value" ], "properties": { - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, "key": { "$ref": "#/components/schemas/Identifier" }, @@ -155772,18 +154750,7 @@ "maxItems": 32, "minItems": 32, "nullable": true - } - } - }, - "VariableDeclarator": { - "type": "object", - "required": [ - "end", - "id", - "init", - "start" - ], - "properties": { + }, "start": { "type": "integer", "format": "uint", @@ -155793,7 +154760,16 @@ "type": "integer", "format": "uint", "minimum": 0.0 - }, + } + } + }, + "VariableDeclarator": { + "type": "object", + "required": [ + "id", + "init" + ], + "properties": { "id": { "description": "The identifier of the variable.", "allOf": [ @@ -155820,6 +154796,16 @@ "maxItems": 32, "minItems": 32, "nullable": true + }, + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 } } }, @@ -155862,7 +154848,9 @@ } }, "currentEnv": { - "$ref": "#/components/schemas/EnvironmentRef" + "type": "integer", + "format": "uint", + "minimum": 0.0 }, "return": { "allOf": [ @@ -155887,11 +154875,9 @@ } }, "parent": { - "allOf": [ - { - "$ref": "#/components/schemas/EnvironmentRef" - } - ], + "type": "integer", + "format": "uint", + "minimum": 0.0, "nullable": true } } @@ -155958,8 +154944,6 @@ { "type": "object", "required": [ - "end", - "start", "type", "value" ], @@ -155970,16 +154954,6 @@ "TagDeclarator" ] }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, "value": { "type": "string" }, @@ -155993,6 +154967,16 @@ "maxItems": 32, "minItems": 32, "nullable": true + }, + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 } } }, @@ -156291,12 +155275,6 @@ } } ] - }, - "EnvironmentRef": { - "description": "An index pointing to an environment.", - "type": "integer", - "format": "uint", - "minimum": 0.0 } } }, @@ -157113,21 +156091,9 @@ "TagDeclarator": { "type": "object", "required": [ - "end", - "start", "value" ], "properties": { - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, "value": { "type": "string" }, @@ -157141,6 +156107,16 @@ "maxItems": 32, "minItems": 32, "nullable": true + }, + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 } } }, @@ -158154,21 +157130,9 @@ "TagDeclarator": { "type": "object", "required": [ - "end", - "start", "value" ], "properties": { - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, "value": { "type": "string" }, @@ -158182,6 +157146,16 @@ "maxItems": 32, "minItems": 32, "nullable": true + }, + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 } } }, @@ -159118,21 +158092,9 @@ "TagDeclarator": { "type": "object", "required": [ - "end", - "start", "value" ], "properties": { - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, "value": { "type": "string" }, @@ -159146,6 +158108,16 @@ "maxItems": 32, "minItems": 32, "nullable": true + }, + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 } } }, @@ -160862,21 +159834,9 @@ "TagDeclarator": { "type": "object", "required": [ - "end", - "start", "value" ], "properties": { - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, "value": { "type": "string" }, @@ -160890,6 +159850,16 @@ "maxItems": 32, "minItems": 32, "nullable": true + }, + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 } } }, @@ -161762,21 +160732,9 @@ "TagDeclarator": { "type": "object", "required": [ - "end", - "start", "value" ], "properties": { - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, "value": { "type": "string" }, @@ -161790,6 +160748,16 @@ "maxItems": 32, "minItems": 32, "nullable": true + }, + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 } } }, @@ -162662,21 +161630,9 @@ "TagDeclarator": { "type": "object", "required": [ - "end", - "start", "value" ], "properties": { - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, "value": { "type": "string" }, @@ -162690,6 +161646,16 @@ "maxItems": 32, "minItems": 32, "nullable": true + }, + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 } } }, @@ -163562,21 +162528,9 @@ "TagDeclarator": { "type": "object", "required": [ - "end", - "start", "value" ], "properties": { - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, "value": { "type": "string" }, @@ -163590,6 +162544,16 @@ "maxItems": 32, "minItems": 32, "nullable": true + }, + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 } } }, @@ -164518,21 +163482,9 @@ "TagDeclarator": { "type": "object", "required": [ - "end", - "start", "value" ], "properties": { - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, "value": { "type": "string" }, @@ -164546,6 +163498,16 @@ "maxItems": 32, "minItems": 32, "nullable": true + }, + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 } } }, @@ -165524,21 +164486,9 @@ "TagDeclarator": { "type": "object", "required": [ - "end", - "start", "value" ], "properties": { - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, "value": { "type": "string" }, @@ -165552,6 +164502,16 @@ "maxItems": 32, "minItems": 32, "nullable": true + }, + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 } } }, @@ -166520,21 +165480,9 @@ "TagDeclarator": { "type": "object", "required": [ - "end", - "start", "value" ], "properties": { - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, "value": { "type": "string" }, @@ -166548,6 +165496,16 @@ "maxItems": 32, "minItems": 32, "nullable": true + }, + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 } } }, @@ -168215,21 +167173,9 @@ "TagDeclarator": { "type": "object", "required": [ - "end", - "start", "value" ], "properties": { - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, "value": { "type": "string" }, @@ -168243,6 +167189,16 @@ "maxItems": 32, "minItems": 32, "nullable": true + }, + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 } } }, @@ -169203,7 +168159,7 @@ }, { "name": "tag", - "type": "TagDeclarator", + "type": "TagNode", "schema": { "$schema": "https://spec.openapis.org/oas/3.0/schema/2019-04-02#/definitions/Schema", "title": "Nullable_TagDeclarator", @@ -169535,21 +168491,9 @@ "TagDeclarator": { "type": "object", "required": [ - "end", - "start", "value" ], "properties": { - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, "value": { "type": "string" }, @@ -169563,6 +168507,16 @@ "maxItems": 32, "minItems": 32, "nullable": true + }, + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 } } }, @@ -171119,21 +170073,9 @@ "TagDeclarator": { "type": "object", "required": [ - "end", - "start", "value" ], "properties": { - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, "value": { "type": "string" }, @@ -171147,6 +170089,16 @@ "maxItems": 32, "minItems": 32, "nullable": true + }, + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 } } }, @@ -172517,21 +171469,9 @@ "TagDeclarator": { "type": "object", "required": [ - "end", - "start", "value" ], "properties": { - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, "value": { "type": "string" }, @@ -172545,6 +171485,16 @@ "maxItems": 32, "minItems": 32, "nullable": true + }, + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 } } }, @@ -173691,21 +172641,9 @@ "TagDeclarator": { "type": "object", "required": [ - "end", - "start", "value" ], "properties": { - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, "value": { "type": "string" }, @@ -173719,6 +172657,16 @@ "maxItems": 32, "minItems": 32, "nullable": true + }, + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 } } }, @@ -175111,21 +174059,9 @@ "TagDeclarator": { "type": "object", "required": [ - "end", - "start", "value" ], "properties": { - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, "value": { "type": "string" }, @@ -175139,6 +174075,16 @@ "maxItems": 32, "minItems": 32, "nullable": true + }, + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 } } }, @@ -176647,21 +175593,9 @@ "TagDeclarator": { "type": "object", "required": [ - "end", - "start", "value" ], "properties": { - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, "value": { "type": "string" }, @@ -176675,6 +175609,16 @@ "maxItems": 32, "minItems": 32, "nullable": true + }, + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 } } }, @@ -178313,21 +177257,9 @@ "TagDeclarator": { "type": "object", "required": [ - "end", - "start", "value" ], "properties": { - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, "value": { "type": "string" }, @@ -178341,6 +177273,16 @@ "maxItems": 32, "minItems": 32, "nullable": true + }, + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 } } }, @@ -179085,7 +178027,7 @@ }, { "name": "tag", - "type": "TagDeclarator", + "type": "TagNode", "schema": { "$schema": "https://spec.openapis.org/oas/3.0/schema/2019-04-02#/definitions/Schema", "title": "Nullable_TagDeclarator", @@ -179633,21 +178575,9 @@ "TagDeclarator": { "type": "object", "required": [ - "end", - "start", "value" ], "properties": { - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, "value": { "type": "string" }, @@ -179661,6 +178591,16 @@ "maxItems": 32, "minItems": 32, "nullable": true + }, + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 } } }, @@ -181001,21 +179941,9 @@ "TagDeclarator": { "type": "object", "required": [ - "end", - "start", "value" ], "properties": { - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, "value": { "type": "string" }, @@ -181029,6 +179957,16 @@ "maxItems": 32, "minItems": 32, "nullable": true + }, + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 } } }, @@ -182396,21 +181334,9 @@ "TagDeclarator": { "type": "object", "required": [ - "end", - "start", "value" ], "properties": { - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, "value": { "type": "string" }, @@ -182424,6 +181350,16 @@ "maxItems": 32, "minItems": 32, "nullable": true + }, + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 } } }, @@ -183168,7 +182104,7 @@ }, { "name": "tag", - "type": "TagDeclarator", + "type": "TagNode", "schema": { "$schema": "https://spec.openapis.org/oas/3.0/schema/2019-04-02#/definitions/Schema", "title": "Nullable_TagDeclarator", @@ -183716,21 +182652,9 @@ "TagDeclarator": { "type": "object", "required": [ - "end", - "start", "value" ], "properties": { - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, "value": { "type": "string" }, @@ -183744,6 +182668,16 @@ "maxItems": 32, "minItems": 32, "nullable": true + }, + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 } } }, @@ -185084,21 +184018,9 @@ "TagDeclarator": { "type": "object", "required": [ - "end", - "start", "value" ], "properties": { - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, "value": { "type": "string" }, @@ -185112,6 +184034,16 @@ "maxItems": 32, "minItems": 32, "nullable": true + }, + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 } } }, @@ -186479,21 +185411,9 @@ "TagDeclarator": { "type": "object", "required": [ - "end", - "start", "value" ], "properties": { - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, "value": { "type": "string" }, @@ -186507,6 +185427,16 @@ "maxItems": 32, "minItems": 32, "nullable": true + }, + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 } } }, @@ -187251,7 +186181,7 @@ }, { "name": "tag", - "type": "TagDeclarator", + "type": "TagNode", "schema": { "$schema": "https://spec.openapis.org/oas/3.0/schema/2019-04-02#/definitions/Schema", "title": "Nullable_TagDeclarator", @@ -187799,21 +186729,9 @@ "TagDeclarator": { "type": "object", "required": [ - "end", - "start", "value" ], "properties": { - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, "value": { "type": "string" }, @@ -187827,6 +186745,16 @@ "maxItems": 32, "minItems": 32, "nullable": true + }, + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 } } }, @@ -189167,21 +188095,9 @@ "TagDeclarator": { "type": "object", "required": [ - "end", - "start", "value" ], "properties": { - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, "value": { "type": "string" }, @@ -189195,6 +188111,16 @@ "maxItems": 32, "minItems": 32, "nullable": true + }, + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 } } }, @@ -190656,21 +189582,9 @@ "TagDeclarator": { "type": "object", "required": [ - "end", - "start", "value" ], "properties": { - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, "value": { "type": "string" }, @@ -190684,6 +189598,16 @@ "maxItems": 32, "minItems": 32, "nullable": true + }, + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 } } }, @@ -191428,7 +190352,7 @@ }, { "name": "tag", - "type": "TagDeclarator", + "type": "TagNode", "schema": { "$schema": "https://spec.openapis.org/oas/3.0/schema/2019-04-02#/definitions/Schema", "title": "Nullable_TagDeclarator", @@ -191976,21 +190900,9 @@ "TagDeclarator": { "type": "object", "required": [ - "end", - "start", "value" ], "properties": { - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, "value": { "type": "string" }, @@ -192004,6 +190916,16 @@ "maxItems": 32, "minItems": 32, "nullable": true + }, + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 } } }, @@ -193344,21 +192266,9 @@ "TagDeclarator": { "type": "object", "required": [ - "end", - "start", "value" ], "properties": { - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, "value": { "type": "string" }, @@ -193372,6 +192282,16 @@ "maxItems": 32, "minItems": 32, "nullable": true + }, + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 } } }, @@ -194734,21 +193654,9 @@ "TagDeclarator": { "type": "object", "required": [ - "end", - "start", "value" ], "properties": { - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, "value": { "type": "string" }, @@ -194762,6 +193670,16 @@ "maxItems": 32, "minItems": 32, "nullable": true + }, + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 } } }, @@ -195506,7 +194424,7 @@ }, { "name": "tag", - "type": "TagDeclarator", + "type": "TagNode", "schema": { "$schema": "https://spec.openapis.org/oas/3.0/schema/2019-04-02#/definitions/Schema", "title": "Nullable_TagDeclarator", @@ -196054,21 +194972,9 @@ "TagDeclarator": { "type": "object", "required": [ - "end", - "start", "value" ], "properties": { - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, "value": { "type": "string" }, @@ -196082,6 +194988,16 @@ "maxItems": 32, "minItems": 32, "nullable": true + }, + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 } } }, @@ -197422,21 +196338,9 @@ "TagDeclarator": { "type": "object", "required": [ - "end", - "start", "value" ], "properties": { - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, "value": { "type": "string" }, @@ -197450,6 +196354,16 @@ "maxItems": 32, "minItems": 32, "nullable": true + }, + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 } } }, @@ -198812,21 +197726,9 @@ "TagDeclarator": { "type": "object", "required": [ - "end", - "start", "value" ], "properties": { - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, "value": { "type": "string" }, @@ -198840,6 +197742,16 @@ "maxItems": 32, "minItems": 32, "nullable": true + }, + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 } } }, @@ -199584,7 +198496,7 @@ }, { "name": "tag", - "type": "TagDeclarator", + "type": "TagNode", "schema": { "$schema": "https://spec.openapis.org/oas/3.0/schema/2019-04-02#/definitions/Schema", "title": "Nullable_TagDeclarator", @@ -200132,21 +199044,9 @@ "TagDeclarator": { "type": "object", "required": [ - "end", - "start", "value" ], "properties": { - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, "value": { "type": "string" }, @@ -200160,6 +199060,16 @@ "maxItems": 32, "minItems": 32, "nullable": true + }, + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 } } }, @@ -201500,21 +200410,9 @@ "TagDeclarator": { "type": "object", "required": [ - "end", - "start", "value" ], "properties": { - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, "value": { "type": "string" }, @@ -201528,6 +200426,16 @@ "maxItems": 32, "minItems": 32, "nullable": true + }, + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 } } }, @@ -202890,21 +201798,9 @@ "TagDeclarator": { "type": "object", "required": [ - "end", - "start", "value" ], "properties": { - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, "value": { "type": "string" }, @@ -202918,6 +201814,16 @@ "maxItems": 32, "minItems": 32, "nullable": true + }, + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 } } }, @@ -203662,7 +202568,7 @@ }, { "name": "tag", - "type": "TagDeclarator", + "type": "TagNode", "schema": { "$schema": "https://spec.openapis.org/oas/3.0/schema/2019-04-02#/definitions/Schema", "title": "Nullable_TagDeclarator", @@ -204210,21 +203116,9 @@ "TagDeclarator": { "type": "object", "required": [ - "end", - "start", "value" ], "properties": { - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, "value": { "type": "string" }, @@ -204238,6 +203132,16 @@ "maxItems": 32, "minItems": 32, "nullable": true + }, + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 } } }, @@ -205578,21 +204482,9 @@ "TagDeclarator": { "type": "object", "required": [ - "end", - "start", "value" ], "properties": { - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, "value": { "type": "string" }, @@ -205606,6 +204498,16 @@ "maxItems": 32, "minItems": 32, "nullable": true + }, + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 } } }, diff --git a/docs/kcl/types/BinaryPart.md b/docs/kcl/types/BinaryPart.md index 87b0b7722..c3c351663 100644 --- a/docs/kcl/types/BinaryPart.md +++ b/docs/kcl/types/BinaryPart.md @@ -23,11 +23,11 @@ layout: manual | Property | Type | Description | Required | |----------|------|-------------|----------| | `type` |enum: `Literal`| | No | -| `start` |[`EnvironmentRef`](/docs/kcl/types/EnvironmentRef)| | No | -| `end` |[`EnvironmentRef`](/docs/kcl/types/EnvironmentRef)| | No | | `value` |[`LiteralValue`](/docs/kcl/types/LiteralValue)| | No | | `raw` |`string`| | No | | `digest` |`[, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`]`| | No | +| `start` |`integer`| | No | +| `end` |`integer`| | No | ---- @@ -43,10 +43,10 @@ layout: manual | Property | Type | Description | Required | |----------|------|-------------|----------| | `type` |enum: [`Identifier`](/docs/kcl/types/Identifier)| | No | -| `start` |[`EnvironmentRef`](/docs/kcl/types/EnvironmentRef)| | No | -| `end` |[`EnvironmentRef`](/docs/kcl/types/EnvironmentRef)| | No | | `name` |`string`| | No | | `digest` |`[, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`]`| | No | +| `start` |`integer`| | No | +| `end` |`integer`| | No | ---- @@ -62,12 +62,12 @@ layout: manual | Property | Type | Description | Required | |----------|------|-------------|----------| | `type` |enum: `BinaryExpression`| | No | -| `start` |[`EnvironmentRef`](/docs/kcl/types/EnvironmentRef)| | No | -| `end` |[`EnvironmentRef`](/docs/kcl/types/EnvironmentRef)| | No | | `operator` |[`BinaryOperator`](/docs/kcl/types/BinaryOperator)| | No | | `left` |[`BinaryPart`](/docs/kcl/types/BinaryPart)| | No | | `right` |[`BinaryPart`](/docs/kcl/types/BinaryPart)| | No | | `digest` |`[, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`]`| | No | +| `start` |`integer`| | No | +| `end` |`integer`| | No | ---- @@ -83,12 +83,12 @@ layout: manual | Property | Type | Description | Required | |----------|------|-------------|----------| | `type` |enum: `CallExpression`| | No | -| `start` |[`EnvironmentRef`](/docs/kcl/types/EnvironmentRef)| | No | -| `end` |[`EnvironmentRef`](/docs/kcl/types/EnvironmentRef)| | No | | `callee` |[`Identifier`](/docs/kcl/types/Identifier)| | No | | `arguments` |`[` [`Expr`](/docs/kcl/types/Expr) `]`| | No | | `optional` |`boolean`| | No | | `digest` |`[, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`]`| | No | +| `start` |`integer`| | No | +| `end` |`integer`| | No | ---- @@ -104,11 +104,11 @@ layout: manual | Property | Type | Description | Required | |----------|------|-------------|----------| | `type` |enum: `UnaryExpression`| | No | -| `start` |[`EnvironmentRef`](/docs/kcl/types/EnvironmentRef)| | No | -| `end` |[`EnvironmentRef`](/docs/kcl/types/EnvironmentRef)| | No | | `operator` |[`UnaryOperator`](/docs/kcl/types/UnaryOperator)| | No | | `argument` |[`BinaryPart`](/docs/kcl/types/BinaryPart)| | No | | `digest` |`[, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`]`| | No | +| `start` |`integer`| | No | +| `end` |`integer`| | No | ---- @@ -124,12 +124,12 @@ layout: manual | Property | Type | Description | Required | |----------|------|-------------|----------| | `type` |enum: `MemberExpression`| | No | -| `start` |[`EnvironmentRef`](/docs/kcl/types/EnvironmentRef)| | No | -| `end` |[`EnvironmentRef`](/docs/kcl/types/EnvironmentRef)| | No | | `object` |[`MemberObject`](/docs/kcl/types/MemberObject)| | No | | `property` |[`LiteralIdentifier`](/docs/kcl/types/LiteralIdentifier)| | No | | `computed` |`boolean`| | No | | `digest` |`[, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`]`| | No | +| `start` |`integer`| | No | +| `end` |`integer`| | No | ---- @@ -145,13 +145,13 @@ layout: manual | Property | Type | Description | Required | |----------|------|-------------|----------| | `type` |enum: `IfExpression`| | No | -| `start` |[`EnvironmentRef`](/docs/kcl/types/EnvironmentRef)| | No | -| `end` |[`EnvironmentRef`](/docs/kcl/types/EnvironmentRef)| | No | | `cond` |[`Expr`](/docs/kcl/types/Expr)| | No | | `then_val` |[`Program`](/docs/kcl/types/Program)| | No | | `else_ifs` |`[` [`ElseIf`](/docs/kcl/types/ElseIf) `]`| | No | | `final_else` |[`Program`](/docs/kcl/types/Program)| | No | | `digest` |`[, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`]`| | No | +| `start` |`integer`| | No | +| `end` |`integer`| | No | ---- diff --git a/docs/kcl/types/BodyItem.md b/docs/kcl/types/BodyItem.md index 38982b74a..c4ba6365b 100644 --- a/docs/kcl/types/BodyItem.md +++ b/docs/kcl/types/BodyItem.md @@ -23,12 +23,12 @@ layout: manual | Property | Type | Description | Required | |----------|------|-------------|----------| | `type` |enum: `ImportStatement`| | No | -| `start` |[`EnvironmentRef`](/docs/kcl/types/EnvironmentRef)| | No | -| `end` |[`EnvironmentRef`](/docs/kcl/types/EnvironmentRef)| | No | | `items` |`[` [`ImportItem`](/docs/kcl/types/ImportItem) `]`| | No | | `path` |`string`| | No | | `raw_path` |`string`| | No | | `digest` |`[, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`]`| | No | +| `start` |`integer`| | No | +| `end` |`integer`| | No | ---- @@ -44,10 +44,10 @@ layout: manual | Property | Type | Description | Required | |----------|------|-------------|----------| | `type` |enum: `ExpressionStatement`| | No | -| `start` |[`EnvironmentRef`](/docs/kcl/types/EnvironmentRef)| | No | -| `end` |[`EnvironmentRef`](/docs/kcl/types/EnvironmentRef)| | No | | `expression` |[`Expr`](/docs/kcl/types/Expr)| | No | | `digest` |`[, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`]`| | No | +| `start` |`integer`| | No | +| `end` |`integer`| | No | ---- @@ -63,12 +63,12 @@ layout: manual | Property | Type | Description | Required | |----------|------|-------------|----------| | `type` |enum: `VariableDeclaration`| | No | -| `start` |[`EnvironmentRef`](/docs/kcl/types/EnvironmentRef)| | No | -| `end` |[`EnvironmentRef`](/docs/kcl/types/EnvironmentRef)| | No | | `declarations` |`[` [`VariableDeclarator`](/docs/kcl/types/VariableDeclarator) `]`| | No | | `visibility` |[`ItemVisibility`](/docs/kcl/types/ItemVisibility)| | No | | `kind` |[`VariableKind`](/docs/kcl/types/VariableKind)| | No | | `digest` |`[, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`]`| | No | +| `start` |`integer`| | No | +| `end` |`integer`| | No | ---- @@ -84,10 +84,10 @@ layout: manual | Property | Type | Description | Required | |----------|------|-------------|----------| | `type` |enum: `ReturnStatement`| | No | -| `start` |[`EnvironmentRef`](/docs/kcl/types/EnvironmentRef)| | No | -| `end` |[`EnvironmentRef`](/docs/kcl/types/EnvironmentRef)| | No | | `argument` |[`Expr`](/docs/kcl/types/Expr)| | No | | `digest` |`[, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`]`| | No | +| `start` |`integer`| | No | +| `end` |`integer`| | No | ---- diff --git a/docs/kcl/types/ElseIf.md b/docs/kcl/types/ElseIf.md index 20f3f6bbe..edccce20f 100644 --- a/docs/kcl/types/ElseIf.md +++ b/docs/kcl/types/ElseIf.md @@ -15,10 +15,10 @@ layout: manual | Property | Type | Description | Required | |----------|------|-------------|----------| -| `start` |[`EnvironmentRef`](/docs/kcl/types/EnvironmentRef)| | No | -| `end` |[`EnvironmentRef`](/docs/kcl/types/EnvironmentRef)| | No | | `cond` |[`Expr`](/docs/kcl/types/Expr)| | No | | `then_val` |[`Program`](/docs/kcl/types/Program)| | No | | `digest` |`[, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`]`| | No | +| `start` |`integer`| | No | +| `end` |`integer`| | No | diff --git a/docs/kcl/types/Environment.md b/docs/kcl/types/Environment.md index d2ed592d9..0a02b3970 100644 --- a/docs/kcl/types/Environment.md +++ b/docs/kcl/types/Environment.md @@ -16,6 +16,6 @@ layout: manual | Property | Type | Description | Required | |----------|------|-------------|----------| | `bindings` |`object`| | No | -| `parent` |[`EnvironmentRef`](/docs/kcl/types/EnvironmentRef)| | No | +| `parent` |`integer`| | No | diff --git a/docs/kcl/types/Expr.md b/docs/kcl/types/Expr.md index 6f708b237..70acbedff 100644 --- a/docs/kcl/types/Expr.md +++ b/docs/kcl/types/Expr.md @@ -24,11 +24,11 @@ An expression can be evaluated to yield a single KCL value. | Property | Type | Description | Required | |----------|------|-------------|----------| | `type` |enum: `Literal`| | No | -| `start` |[`EnvironmentRef`](/docs/kcl/types/EnvironmentRef)| | No | -| `end` |[`EnvironmentRef`](/docs/kcl/types/EnvironmentRef)| | No | | `value` |[`LiteralValue`](/docs/kcl/types/LiteralValue)| An expression can be evaluated to yield a single KCL value. | No | | `raw` |`string`| | No | | `digest` |`[, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`]`| | No | +| `start` |`integer`| | No | +| `end` |`integer`| | No | ---- @@ -44,10 +44,10 @@ An expression can be evaluated to yield a single KCL value. | Property | Type | Description | Required | |----------|------|-------------|----------| | `type` |enum: [`Identifier`](/docs/kcl/types/Identifier)| | No | -| `start` |[`EnvironmentRef`](/docs/kcl/types/EnvironmentRef)| | No | -| `end` |[`EnvironmentRef`](/docs/kcl/types/EnvironmentRef)| | No | | `name` |`string`| | No | | `digest` |`[, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`]`| | No | +| `start` |`integer`| | No | +| `end` |`integer`| | No | ---- @@ -63,10 +63,10 @@ An expression can be evaluated to yield a single KCL value. | Property | Type | Description | Required | |----------|------|-------------|----------| | `type` |enum: [`TagDeclarator`](/docs/kcl/types#tag-declaration)| | No | -| `start` |[`EnvironmentRef`](/docs/kcl/types/EnvironmentRef)| | No | -| `end` |[`EnvironmentRef`](/docs/kcl/types/EnvironmentRef)| | No | | `value` |`string`| | No | | `digest` |`[, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`]`| | No | +| `start` |`integer`| | No | +| `end` |`integer`| | No | ---- @@ -82,12 +82,12 @@ An expression can be evaluated to yield a single KCL value. | Property | Type | Description | Required | |----------|------|-------------|----------| | `type` |enum: `BinaryExpression`| | No | -| `start` |[`EnvironmentRef`](/docs/kcl/types/EnvironmentRef)| | No | -| `end` |[`EnvironmentRef`](/docs/kcl/types/EnvironmentRef)| | No | | `operator` |[`BinaryOperator`](/docs/kcl/types/BinaryOperator)| An expression can be evaluated to yield a single KCL value. | No | | `left` |[`BinaryPart`](/docs/kcl/types/BinaryPart)| An expression can be evaluated to yield a single KCL value. | No | | `right` |[`BinaryPart`](/docs/kcl/types/BinaryPart)| An expression can be evaluated to yield a single KCL value. | No | | `digest` |`[, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`]`| | No | +| `start` |`integer`| | No | +| `end` |`integer`| | No | ---- @@ -103,11 +103,11 @@ An expression can be evaluated to yield a single KCL value. | Property | Type | Description | Required | |----------|------|-------------|----------| | `type` |enum: [`FunctionExpression`](/docs/kcl/types/FunctionExpression)| | No | -| `start` |[`EnvironmentRef`](/docs/kcl/types/EnvironmentRef)| | No | -| `end` |[`EnvironmentRef`](/docs/kcl/types/EnvironmentRef)| | No | | `params` |`[` [`Parameter`](/docs/kcl/types/Parameter) `]`| | No | | `body` |[`Program`](/docs/kcl/types/Program)| An expression can be evaluated to yield a single KCL value. | No | | `digest` |`[, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`]`| | No | +| `start` |`integer`| | No | +| `end` |`integer`| | No | ---- @@ -123,12 +123,12 @@ An expression can be evaluated to yield a single KCL value. | Property | Type | Description | Required | |----------|------|-------------|----------| | `type` |enum: `CallExpression`| | No | -| `start` |[`EnvironmentRef`](/docs/kcl/types/EnvironmentRef)| | No | -| `end` |[`EnvironmentRef`](/docs/kcl/types/EnvironmentRef)| | No | | `callee` |[`Identifier`](/docs/kcl/types/Identifier)| An expression can be evaluated to yield a single KCL value. | No | | `arguments` |`[` [`Expr`](/docs/kcl/types/Expr) `]`| | No | | `optional` |`boolean`| | No | | `digest` |`[, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`]`| | No | +| `start` |`integer`| | No | +| `end` |`integer`| | No | ---- @@ -144,11 +144,11 @@ An expression can be evaluated to yield a single KCL value. | Property | Type | Description | Required | |----------|------|-------------|----------| | `type` |enum: `PipeExpression`| | No | -| `start` |[`EnvironmentRef`](/docs/kcl/types/EnvironmentRef)| | No | -| `end` |[`EnvironmentRef`](/docs/kcl/types/EnvironmentRef)| | No | | `body` |`[` [`Expr`](/docs/kcl/types/Expr) `]`| | No | | `nonCodeMeta` |[`NonCodeMeta`](/docs/kcl/types/NonCodeMeta)| An expression can be evaluated to yield a single KCL value. | No | | `digest` |`[, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`]`| | No | +| `start` |`integer`| | No | +| `end` |`integer`| | No | ---- @@ -164,9 +164,9 @@ An expression can be evaluated to yield a single KCL value. | Property | Type | Description | Required | |----------|------|-------------|----------| | `type` |enum: `PipeSubstitution`| | No | -| `start` |[`EnvironmentRef`](/docs/kcl/types/EnvironmentRef)| | No | -| `end` |[`EnvironmentRef`](/docs/kcl/types/EnvironmentRef)| | No | | `digest` |`[, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`]`| | No | +| `start` |`integer`| | No | +| `end` |`integer`| | No | ---- @@ -182,11 +182,11 @@ An expression can be evaluated to yield a single KCL value. | Property | Type | Description | Required | |----------|------|-------------|----------| | `type` |enum: `ArrayExpression`| | No | -| `start` |[`EnvironmentRef`](/docs/kcl/types/EnvironmentRef)| | No | -| `end` |[`EnvironmentRef`](/docs/kcl/types/EnvironmentRef)| | No | | `elements` |`[` [`Expr`](/docs/kcl/types/Expr) `]`| | No | | `nonCodeMeta` |[`NonCodeMeta`](/docs/kcl/types/NonCodeMeta)| An expression can be evaluated to yield a single KCL value. | No | | `digest` |`[, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`]`| | No | +| `start` |`integer`| | No | +| `end` |`integer`| | No | ---- @@ -202,12 +202,12 @@ An expression can be evaluated to yield a single KCL value. | Property | Type | Description | Required | |----------|------|-------------|----------| | `type` |enum: `ArrayRangeExpression`| | No | -| `start` |[`EnvironmentRef`](/docs/kcl/types/EnvironmentRef)| | No | -| `end` |[`EnvironmentRef`](/docs/kcl/types/EnvironmentRef)| | No | | `startElement` |[`Expr`](/docs/kcl/types/Expr)| An expression can be evaluated to yield a single KCL value. | No | | `endElement` |[`Expr`](/docs/kcl/types/Expr)| An expression can be evaluated to yield a single KCL value. | No | | `endInclusive` |`boolean`| Is the `end_element` included in the range? | No | | `digest` |`[, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`]`| | No | +| `start` |`integer`| | No | +| `end` |`integer`| | No | ---- @@ -223,11 +223,11 @@ An expression can be evaluated to yield a single KCL value. | Property | Type | Description | Required | |----------|------|-------------|----------| | `type` |enum: `ObjectExpression`| | No | -| `start` |[`EnvironmentRef`](/docs/kcl/types/EnvironmentRef)| | No | -| `end` |[`EnvironmentRef`](/docs/kcl/types/EnvironmentRef)| | No | | `properties` |`[` [`ObjectProperty`](/docs/kcl/types/ObjectProperty) `]`| | No | | `nonCodeMeta` |[`NonCodeMeta`](/docs/kcl/types/NonCodeMeta)| An expression can be evaluated to yield a single KCL value. | No | | `digest` |`[, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`]`| | No | +| `start` |`integer`| | No | +| `end` |`integer`| | No | ---- @@ -243,12 +243,12 @@ An expression can be evaluated to yield a single KCL value. | Property | Type | Description | Required | |----------|------|-------------|----------| | `type` |enum: `MemberExpression`| | No | -| `start` |[`EnvironmentRef`](/docs/kcl/types/EnvironmentRef)| | No | -| `end` |[`EnvironmentRef`](/docs/kcl/types/EnvironmentRef)| | No | | `object` |[`MemberObject`](/docs/kcl/types/MemberObject)| An expression can be evaluated to yield a single KCL value. | No | | `property` |[`LiteralIdentifier`](/docs/kcl/types/LiteralIdentifier)| An expression can be evaluated to yield a single KCL value. | No | | `computed` |`boolean`| | No | | `digest` |`[, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`]`| | No | +| `start` |`integer`| | No | +| `end` |`integer`| | No | ---- @@ -264,11 +264,11 @@ An expression can be evaluated to yield a single KCL value. | Property | Type | Description | Required | |----------|------|-------------|----------| | `type` |enum: `UnaryExpression`| | No | -| `start` |[`EnvironmentRef`](/docs/kcl/types/EnvironmentRef)| | No | -| `end` |[`EnvironmentRef`](/docs/kcl/types/EnvironmentRef)| | No | | `operator` |[`UnaryOperator`](/docs/kcl/types/UnaryOperator)| An expression can be evaluated to yield a single KCL value. | No | | `argument` |[`BinaryPart`](/docs/kcl/types/BinaryPart)| An expression can be evaluated to yield a single KCL value. | No | | `digest` |`[, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`]`| | No | +| `start` |`integer`| | No | +| `end` |`integer`| | No | ---- @@ -284,13 +284,13 @@ An expression can be evaluated to yield a single KCL value. | Property | Type | Description | Required | |----------|------|-------------|----------| | `type` |enum: `IfExpression`| | No | -| `start` |[`EnvironmentRef`](/docs/kcl/types/EnvironmentRef)| | No | -| `end` |[`EnvironmentRef`](/docs/kcl/types/EnvironmentRef)| | No | | `cond` |[`Expr`](/docs/kcl/types/Expr)| An expression can be evaluated to yield a single KCL value. | No | | `then_val` |[`Program`](/docs/kcl/types/Program)| An expression can be evaluated to yield a single KCL value. | No | | `else_ifs` |`[` [`ElseIf`](/docs/kcl/types/ElseIf) `]`| | No | | `final_else` |[`Program`](/docs/kcl/types/Program)| An expression can be evaluated to yield a single KCL value. | No | | `digest` |`[, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`]`| | No | +| `start` |`integer`| | No | +| `end` |`integer`| | No | ---- @@ -307,8 +307,8 @@ KCL value for an optional parameter which was not given an argument. (remember, | Property | Type | Description | Required | |----------|------|-------------|----------| | `type` |enum: `None`| | No | -| `start` |[`EnvironmentRef`](/docs/kcl/types/EnvironmentRef)| | No | -| `end` |[`EnvironmentRef`](/docs/kcl/types/EnvironmentRef)| | No | +| `start` |`integer`| | No | +| `end` |`integer`| | No | ---- diff --git a/docs/kcl/types/FunctionExpression.md b/docs/kcl/types/FunctionExpression.md index 5ad84fc1d..e112b4f42 100644 --- a/docs/kcl/types/FunctionExpression.md +++ b/docs/kcl/types/FunctionExpression.md @@ -15,10 +15,10 @@ layout: manual | Property | Type | Description | Required | |----------|------|-------------|----------| -| `start` |[`EnvironmentRef`](/docs/kcl/types/EnvironmentRef)| | No | -| `end` |[`EnvironmentRef`](/docs/kcl/types/EnvironmentRef)| | No | | `params` |`[` [`Parameter`](/docs/kcl/types/Parameter) `]`| | No | | `body` |[`Program`](/docs/kcl/types/Program)| | No | | `digest` |`[, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`]`| | No | +| `start` |`integer`| | No | +| `end` |`integer`| | No | diff --git a/docs/kcl/types/Identifier.md b/docs/kcl/types/Identifier.md index a07e5a9ae..47c039c3f 100644 --- a/docs/kcl/types/Identifier.md +++ b/docs/kcl/types/Identifier.md @@ -15,9 +15,9 @@ layout: manual | Property | Type | Description | Required | |----------|------|-------------|----------| -| `start` |[`EnvironmentRef`](/docs/kcl/types/EnvironmentRef)| | No | -| `end` |[`EnvironmentRef`](/docs/kcl/types/EnvironmentRef)| | No | | `name` |`string`| | No | | `digest` |`[, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`]`| | No | +| `start` |`integer`| | No | +| `end` |`integer`| | No | diff --git a/docs/kcl/types/ImportItem.md b/docs/kcl/types/ImportItem.md index 393fe9fd9..78d21704d 100644 --- a/docs/kcl/types/ImportItem.md +++ b/docs/kcl/types/ImportItem.md @@ -17,8 +17,8 @@ layout: manual |----------|------|-------------|----------| | `name` |[`Identifier`](/docs/kcl/types/Identifier)| Name of the item to import. | No | | `alias` |[`Identifier`](/docs/kcl/types/Identifier)| Rename the item using an identifier after "as". | No | -| `start` |[`EnvironmentRef`](/docs/kcl/types/EnvironmentRef)| | No | -| `end` |[`EnvironmentRef`](/docs/kcl/types/EnvironmentRef)| | No | | `digest` |`[, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`]`| | No | +| `start` |`integer`| | No | +| `end` |`integer`| | No | diff --git a/docs/kcl/types/KclValue.md b/docs/kcl/types/KclValue.md index 280a85263..91914ffd4 100644 --- a/docs/kcl/types/KclValue.md +++ b/docs/kcl/types/KclValue.md @@ -59,10 +59,10 @@ Any KCL value. | Property | Type | Description | Required | |----------|------|-------------|----------| | `type` |enum: [`TagDeclarator`](/docs/kcl/types#tag-declaration)| | No | -| `start` |[`EnvironmentRef`](/docs/kcl/types/EnvironmentRef)| | No | -| `end` |[`EnvironmentRef`](/docs/kcl/types/EnvironmentRef)| | No | | `value` |`string`| | No | | `digest` |`[, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`]`| | No | +| `start` |`integer`| | No | +| `end` |`integer`| | No | ---- diff --git a/docs/kcl/types/LiteralIdentifier.md b/docs/kcl/types/LiteralIdentifier.md index 654d7e501..006877fc9 100644 --- a/docs/kcl/types/LiteralIdentifier.md +++ b/docs/kcl/types/LiteralIdentifier.md @@ -23,10 +23,10 @@ layout: manual | Property | Type | Description | Required | |----------|------|-------------|----------| | `type` |enum: [`Identifier`](/docs/kcl/types/Identifier)| | No | -| `start` |[`EnvironmentRef`](/docs/kcl/types/EnvironmentRef)| | No | -| `end` |[`EnvironmentRef`](/docs/kcl/types/EnvironmentRef)| | No | | `name` |`string`| | No | | `digest` |`[, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`]`| | No | +| `start` |`integer`| | No | +| `end` |`integer`| | No | ---- @@ -42,11 +42,11 @@ layout: manual | Property | Type | Description | Required | |----------|------|-------------|----------| | `type` |enum: `Literal`| | No | -| `start` |[`EnvironmentRef`](/docs/kcl/types/EnvironmentRef)| | No | -| `end` |[`EnvironmentRef`](/docs/kcl/types/EnvironmentRef)| | No | | `value` |[`LiteralValue`](/docs/kcl/types/LiteralValue)| | No | | `raw` |`string`| | No | | `digest` |`[, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`]`| | No | +| `start` |`integer`| | No | +| `end` |`integer`| | No | ---- diff --git a/docs/kcl/types/MemberObject.md b/docs/kcl/types/MemberObject.md index 568ab0bc2..4d37ff2da 100644 --- a/docs/kcl/types/MemberObject.md +++ b/docs/kcl/types/MemberObject.md @@ -23,12 +23,12 @@ layout: manual | Property | Type | Description | Required | |----------|------|-------------|----------| | `type` |enum: `MemberExpression`| | No | -| `start` |[`EnvironmentRef`](/docs/kcl/types/EnvironmentRef)| | No | -| `end` |[`EnvironmentRef`](/docs/kcl/types/EnvironmentRef)| | No | | `object` |[`MemberObject`](/docs/kcl/types/MemberObject)| | No | | `property` |[`LiteralIdentifier`](/docs/kcl/types/LiteralIdentifier)| | No | | `computed` |`boolean`| | No | | `digest` |`[, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`]`| | No | +| `start` |`integer`| | No | +| `end` |`integer`| | No | ---- @@ -44,10 +44,10 @@ layout: manual | Property | Type | Description | Required | |----------|------|-------------|----------| | `type` |enum: [`Identifier`](/docs/kcl/types/Identifier)| | No | -| `start` |[`EnvironmentRef`](/docs/kcl/types/EnvironmentRef)| | No | -| `end` |[`EnvironmentRef`](/docs/kcl/types/EnvironmentRef)| | No | | `name` |`string`| | No | | `digest` |`[, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`]`| | No | +| `start` |`integer`| | No | +| `end` |`integer`| | No | ---- diff --git a/docs/kcl/types/NonCodeMeta.md b/docs/kcl/types/NonCodeMeta.md index 14b14d4c8..afa406f7d 100644 --- a/docs/kcl/types/NonCodeMeta.md +++ b/docs/kcl/types/NonCodeMeta.md @@ -16,7 +16,7 @@ layout: manual | Property | Type | Description | Required | |----------|------|-------------|----------| | `nonCodeNodes` |`object`| | No | -| `start` |`[` [`NonCodeNode`](/docs/kcl/types/NonCodeNode) `]`| | No | +| `startNodes` |`[` [`NonCodeNode`](/docs/kcl/types/NonCodeNode) `]`| | No | | `digest` |`[, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`]`| | No | diff --git a/docs/kcl/types/NonCodeNode.md b/docs/kcl/types/NonCodeNode.md index 2209de97a..6554cf765 100644 --- a/docs/kcl/types/NonCodeNode.md +++ b/docs/kcl/types/NonCodeNode.md @@ -15,9 +15,9 @@ layout: manual | Property | Type | Description | Required | |----------|------|-------------|----------| -| `start` |[`EnvironmentRef`](/docs/kcl/types/EnvironmentRef)| | No | -| `end` |[`EnvironmentRef`](/docs/kcl/types/EnvironmentRef)| | No | | `value` |[`NonCodeValue`](/docs/kcl/types/NonCodeValue)| | No | | `digest` |`[, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`]`| | No | +| `start` |`integer`| | No | +| `end` |`integer`| | No | diff --git a/docs/kcl/types/ObjectProperty.md b/docs/kcl/types/ObjectProperty.md index 57b1ea331..9e7ae87c1 100644 --- a/docs/kcl/types/ObjectProperty.md +++ b/docs/kcl/types/ObjectProperty.md @@ -15,10 +15,10 @@ layout: manual | Property | Type | Description | Required | |----------|------|-------------|----------| -| `start` |[`EnvironmentRef`](/docs/kcl/types/EnvironmentRef)| | No | -| `end` |[`EnvironmentRef`](/docs/kcl/types/EnvironmentRef)| | No | | `key` |[`Identifier`](/docs/kcl/types/Identifier)| | No | | `value` |[`Expr`](/docs/kcl/types/Expr)| | No | | `digest` |`[, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`]`| | No | +| `start` |`integer`| | No | +| `end` |`integer`| | No | diff --git a/docs/kcl/types/Program.md b/docs/kcl/types/Program.md index b33b63e9b..4865c7cf8 100644 --- a/docs/kcl/types/Program.md +++ b/docs/kcl/types/Program.md @@ -16,10 +16,10 @@ A KCL program top level, or function body. | Property | Type | Description | Required | |----------|------|-------------|----------| -| `start` |[`EnvironmentRef`](/docs/kcl/types/EnvironmentRef)| | No | -| `end` |[`EnvironmentRef`](/docs/kcl/types/EnvironmentRef)| | No | | `body` |`[` [`BodyItem`](/docs/kcl/types/BodyItem) `]`| | No | | `nonCodeMeta` |[`NonCodeMeta`](/docs/kcl/types/NonCodeMeta)| A KCL program top level, or function body. | No | | `digest` |`[, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`]`| | No | +| `start` |`integer`| | No | +| `end` |`integer`| | No | diff --git a/docs/kcl/types/ProgramMemory.md b/docs/kcl/types/ProgramMemory.md index b6bd5c095..f69bec185 100644 --- a/docs/kcl/types/ProgramMemory.md +++ b/docs/kcl/types/ProgramMemory.md @@ -16,7 +16,7 @@ layout: manual | Property | Type | Description | Required | |----------|------|-------------|----------| | `environments` |`[` [`Environment`](/docs/kcl/types/Environment) `]`| | No | -| `currentEnv` |[`EnvironmentRef`](/docs/kcl/types/EnvironmentRef)| | No | +| `currentEnv` |`integer`| | No | | `return` |[`KclValue`](/docs/kcl/types/KclValue)| | No | diff --git a/docs/kcl/types/VariableDeclarator.md b/docs/kcl/types/VariableDeclarator.md index 5af68d91a..1f7f88a28 100644 --- a/docs/kcl/types/VariableDeclarator.md +++ b/docs/kcl/types/VariableDeclarator.md @@ -15,10 +15,10 @@ layout: manual | Property | Type | Description | Required | |----------|------|-------------|----------| -| `start` |[`EnvironmentRef`](/docs/kcl/types/EnvironmentRef)| | No | -| `end` |[`EnvironmentRef`](/docs/kcl/types/EnvironmentRef)| | No | | `id` |[`Identifier`](/docs/kcl/types/Identifier)| The identifier of the variable. | No | | `init` |[`Expr`](/docs/kcl/types/Expr)| The value of the variable. | No | | `digest` |`[, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`]`| | No | +| `start` |`integer`| | No | +| `end` |`integer`| | No | diff --git a/public/kcl-samples-manifest-fallback.json b/public/kcl-samples-manifest-fallback.json index 5731b173b..de6867795 100644 --- a/public/kcl-samples-manifest-fallback.json +++ b/public/kcl-samples-manifest-fallback.json @@ -34,6 +34,11 @@ "title": "Car Wheel Assembly", "description": "A car wheel assembly with a rotor, tire, and lug nuts." }, + { + "file": "dodecahedron.kcl", + "title": "Hollow Dodecahedron", + "description": "A regular dodecahedron or pentagonal dodecahedron is a dodecahedron composed of regular pentagonal faces, three meeting at each vertex. This example shows constructing the individual faces of the dodecahedron and extruding inwards." + }, { "file": "enclosure.kcl", "title": "Enclosure", @@ -54,6 +59,11 @@ "title": "A mounting bracket for the Focusrite Scarlett Solo audio interface", "description": "This is a bracket that holds an audio device underneath a desk or shelf. The audio device has dimensions of 144mm wide, 80mm length and 45mm depth with fillets of 6mm. This mounting bracket is designed to be 3D printed with PLA material" }, + { + "file": "food-service-spatula.kcl", + "title": "Food Service Spatula", + "description": "Use these spatulas for mixing, flipping, and scraping." + }, { "file": "french-press.kcl", "title": "French Press", @@ -61,7 +71,7 @@ }, { "file": "gear.kcl", - "title": "Gear", + "title": "Spur Gear", "description": "A rotating machine part having cut teeth or, in the case of a cogwheel, inserted teeth (called cogs), which mesh with another toothed part to transmit torque. Geared devices can change the speed, torque, and direction of a power source. The two elements that define a gear are its circular shape and the teeth that are integrated into its outer edge, which are designed to fit into the teeth of another gear." }, { diff --git a/src/clientSideScene/ClientSideSceneComp.tsx b/src/clientSideScene/ClientSideSceneComp.tsx index 7a545cce8..a4870decb 100644 --- a/src/clientSideScene/ClientSideSceneComp.tsx +++ b/src/clientSideScene/ClientSideSceneComp.tsx @@ -44,6 +44,7 @@ import { import { ActionButton } from 'components/ActionButton' import { err, reportRejection, trap } from 'lib/trap' import { useCommandsContext } from 'hooks/useCommandsContext' +import { Node } from 'wasm-lib/kcl/bindings/Node' function useShouldHideScene(): { hideClient: boolean; hideServer: boolean } { const [isCamMoving, setIsCamMoving] = useState(false) @@ -201,7 +202,7 @@ const Overlay = ({ let xAlignment = overlay.angle < 0 ? '0%' : '-100%' let yAlignment = overlay.angle < -90 || overlay.angle >= 90 ? '0%' : '-100%' - const _node1 = getNodeFromPath( + const _node1 = getNodeFromPath>( kclManager.ast, overlay.pathToNode, 'CallExpression' @@ -381,7 +382,7 @@ export async function deleteSegment({ pathToNode: PathToNode sketchDetails: SketchDetails | null }) { - let modifiedAst: Program | Error = kclManager.ast + let modifiedAst: Node | Error = kclManager.ast const dependentRanges = findUsesOfTagInPipe(modifiedAst, pathToNode) const shouldContinueSegDelete = dependentRanges.length diff --git a/src/clientSideScene/sceneEntities.ts b/src/clientSideScene/sceneEntities.ts index 0fd371751..788b2fe0f 100644 --- a/src/clientSideScene/sceneEntities.ts +++ b/src/clientSideScene/sceneEntities.ts @@ -92,6 +92,7 @@ import { err, reportRejection, trap } from 'lib/trap' import { CSS2DObject } from 'three/examples/jsm/renderers/CSS2DRenderer' import { Point3d } from 'wasm-lib/kcl/bindings/Point3d' import { SegmentInputs } from 'lang/std/stdTypes' +import { Node } from 'wasm-lib/kcl/bindings/Node' type DraftSegment = 'line' | 'tangentialArcTo' @@ -374,14 +375,14 @@ export class SceneEntities { selectionRanges, }: { sketchPathToNode: PathToNode - maybeModdedAst: Program + maybeModdedAst: Node draftExpressionsIndices?: { start: number; end: number } forward: [number, number, number] up: [number, number, number] position?: [number, number, number] selectionRanges?: Selections }): Promise<{ - truncatedAst: Program + truncatedAst: Node programMemoryOverride: ProgramMemory sketch: Sketch variableDeclarationName: string @@ -566,7 +567,7 @@ export class SceneEntities { } updateAstAndRejigSketch = async ( sketchPathToNode: PathToNode, - modifiedAst: Program | Error, + modifiedAst: Node | Error, forward: [number, number, number], up: [number, number, number], origin: [number, number, number] @@ -1202,7 +1203,7 @@ export class SceneEntities { } prepareTruncatedMemoryAndAst = ( sketchPathToNode: PathToNode, - ast?: Program, + ast?: Node, draftSegment?: DraftSegment ) => prepareTruncatedMemoryAndAst( @@ -1223,7 +1224,7 @@ export class SceneEntities { sketchPathToNode: PathToNode intersects: Intersection>[] draftInfo?: { - truncatedAst: Program + truncatedAst: Node programMemoryOverride: ProgramMemory variableDeclarationName: string } @@ -1259,7 +1260,7 @@ export class SceneEntities { const dragTo: [number, number] = [intersection2d.x, intersection2d.y] let modifiedAst = draftInfo ? draftInfo.truncatedAst : { ...kclManager.ast } - const _node = getNodeFromPath( + const _node = getNodeFromPath>( modifiedAst, pathToNode, 'CallExpression' @@ -1271,7 +1272,7 @@ export class SceneEntities { let modded: | { - modifiedAst: Program + modifiedAst: Node pathToNode: PathToNode } | Error @@ -1566,7 +1567,7 @@ export class SceneEntities { if (parent?.userData?.pathToNode) { const updatedAst = parse(recast(kclManager.ast)) if (trap(updatedAst)) return - const _node = getNodeFromPath( + const _node = getNodeFromPath>( updatedAst, parent.userData.pathToNode, 'CallExpression' @@ -1701,12 +1702,12 @@ export type DefaultPlaneStr = 'XY' | 'XZ' | 'YZ' | '-XY' | '-XZ' | '-YZ' function prepareTruncatedMemoryAndAst( sketchPathToNode: PathToNode, - ast: Program, + ast: Node, programMemory: ProgramMemory, draftSegment?: DraftSegment ): | { - truncatedAst: Program + truncatedAst: Node programMemoryOverride: ProgramMemory variableDeclarationName: string } @@ -1714,7 +1715,7 @@ function prepareTruncatedMemoryAndAst( const bodyIndex = Number(sketchPathToNode?.[1]?.[0]) || 0 const _ast = structuredClone(ast) - const _node = getNodeFromPath( + const _node = getNodeFromPath>( _ast, sketchPathToNode || [], 'VariableDeclaration' @@ -1764,15 +1765,15 @@ function prepareTruncatedMemoryAndAst( ).body.slice(-1)[0].start = lastPipeItem.start _ast.end = lastPipeItem.end - const varDec = _ast.body[bodyIndex] as VariableDeclaration + const varDec = _ast.body[bodyIndex] as Node varDec.end = lastPipeItem.end const declarator = varDec.declarations[0] declarator.end = lastPipeItem.end - const init = declarator.init as PipeExpression + const init = declarator.init as Node init.end = lastPipeItem.end init.body.slice(-1)[0].end = lastPipeItem.end } - const truncatedAst: Program = { + const truncatedAst: Node = { ..._ast, body: [structuredClone(_ast.body[bodyIndex])], } diff --git a/src/components/ModelingMachineProvider.tsx b/src/components/ModelingMachineProvider.tsx index 137ba8bf9..7b6a41898 100644 --- a/src/components/ModelingMachineProvider.tsx +++ b/src/components/ModelingMachineProvider.tsx @@ -91,6 +91,7 @@ import { submitAndAwaitTextToKcl } from 'lib/textToCad' import { useFileContext } from 'hooks/useFileContext' import { uuidv4 } from 'lib/utils' import { IndexLoaderData } from 'lib/types' +import { Node } from 'wasm-lib/kcl/bindings/Node' type MachineContext = { state: StateFrom @@ -971,7 +972,7 @@ export const ModelingMachineProvider = ({ }) let parsed = parse(recast(kclManager.ast)) if (trap(parsed)) return Promise.reject(parsed) - parsed = parsed as Program + parsed = parsed as Node const { modifiedAst: _modifiedAst, pathToReplacedNode } = moveValueIntoNewVariablePath( @@ -982,7 +983,7 @@ export const ModelingMachineProvider = ({ ) parsed = parse(recast(_modifiedAst)) if (trap(parsed)) return Promise.reject(parsed) - parsed = parsed as Program + parsed = parsed as Node if (!pathToReplacedNode) return Promise.reject(new Error('No path to replaced node')) diff --git a/src/components/Toolbar/EqualLength.tsx b/src/components/Toolbar/EqualLength.tsx index 23b27bc79..63c96d448 100644 --- a/src/components/Toolbar/EqualLength.tsx +++ b/src/components/Toolbar/EqualLength.tsx @@ -14,6 +14,7 @@ import { import { TransformInfo } from 'lang/std/stdTypes' import { kclManager } from 'lib/singletons' import { err } from 'lib/trap' +import { Node } from 'wasm-lib/kcl/bindings/Node' export function setEqualLengthInfo({ selectionRanges, @@ -86,7 +87,7 @@ export function applyConstraintEqualLength({ selectionRanges: Selections }): | { - modifiedAst: Program + modifiedAst: Node pathToNodeMap: PathToNodeMap } | Error { diff --git a/src/components/Toolbar/HorzVert.tsx b/src/components/Toolbar/HorzVert.tsx index 797db49a7..967b545ac 100644 --- a/src/components/Toolbar/HorzVert.tsx +++ b/src/components/Toolbar/HorzVert.tsx @@ -13,6 +13,7 @@ import { import { TransformInfo } from 'lang/std/stdTypes' import { kclManager } from 'lib/singletons' import { err } from 'lib/trap' +import { Node } from 'wasm-lib/kcl/bindings/Node' export function horzVertInfo( selectionRanges: Selections, @@ -55,11 +56,11 @@ export function horzVertInfo( export function applyConstraintHorzVert( selectionRanges: Selections, horOrVert: 'vertical' | 'horizontal', - ast: Program, + ast: Node, programMemory: ProgramMemory ): | { - modifiedAst: Program + modifiedAst: Node pathToNodeMap: PathToNodeMap } | Error { diff --git a/src/components/Toolbar/Intersect.tsx b/src/components/Toolbar/Intersect.tsx index c2cd833e8..6d31cb009 100644 --- a/src/components/Toolbar/Intersect.tsx +++ b/src/components/Toolbar/Intersect.tsx @@ -19,6 +19,7 @@ import { createVariableDeclaration } from '../../lang/modifyAst' import { removeDoubleNegatives } from '../AvailableVarsHelpers' import { kclManager } from 'lib/singletons' import { err } from 'lib/trap' +import { Node } from 'wasm-lib/kcl/bindings/Node' const getModalInfo = createInfoModal(GetInfoModal) @@ -136,7 +137,7 @@ export async function applyConstraintIntersect({ }: { selectionRanges: Selections }): Promise<{ - modifiedAst: Program + modifiedAst: Node pathToNodeMap: PathToNodeMap }> { const info = intersectInfo({ diff --git a/src/components/Toolbar/RemoveConstrainingValues.tsx b/src/components/Toolbar/RemoveConstrainingValues.tsx index dd88fad01..2f9e6c5da 100644 --- a/src/components/Toolbar/RemoveConstrainingValues.tsx +++ b/src/components/Toolbar/RemoveConstrainingValues.tsx @@ -13,6 +13,7 @@ import { import { TransformInfo } from 'lang/std/stdTypes' import { kclManager } from 'lib/singletons' import { err } from 'lib/trap' +import { Node } from 'wasm-lib/kcl/bindings/Node' export function removeConstrainingValuesInfo({ selectionRanges, @@ -77,7 +78,7 @@ export function applyRemoveConstrainingValues({ pathToNodes?: Array }): | { - modifiedAst: Program + modifiedAst: Node pathToNodeMap: PathToNodeMap } | Error { diff --git a/src/components/Toolbar/SetAbsDistance.tsx b/src/components/Toolbar/SetAbsDistance.tsx index decae9565..4da63e473 100644 --- a/src/components/Toolbar/SetAbsDistance.tsx +++ b/src/components/Toolbar/SetAbsDistance.tsx @@ -23,6 +23,7 @@ import { import { removeDoubleNegatives } from '../AvailableVarsHelpers' import { kclManager } from 'lib/singletons' import { err } from 'lib/trap' +import { Node } from 'wasm-lib/kcl/bindings/Node' const getModalInfo = createSetAngleLengthModal(SetAngleLengthModal) @@ -161,7 +162,7 @@ export function applyConstraintAxisAlign({ constraint: 'snapToYAxis' | 'snapToXAxis' }): | { - modifiedAst: Program + modifiedAst: Node pathToNodeMap: PathToNodeMap } | Error { diff --git a/src/components/Toolbar/SetHorzVertDistance.tsx b/src/components/Toolbar/SetHorzVertDistance.tsx index 428c680d2..a874fa14c 100644 --- a/src/components/Toolbar/SetHorzVertDistance.tsx +++ b/src/components/Toolbar/SetHorzVertDistance.tsx @@ -18,6 +18,7 @@ import { removeDoubleNegatives } from '../AvailableVarsHelpers' import { kclManager } from 'lib/singletons' import { Selections } from 'lib/selections' import { cleanErrs, err } from 'lib/trap' +import { Node } from 'wasm-lib/kcl/bindings/Node' const getModalInfo = createInfoModal(GetInfoModal) @@ -185,7 +186,7 @@ export function applyConstraintHorzVertAlign({ constraint: 'setHorzDistance' | 'setVertDistance' }): | { - modifiedAst: Program + modifiedAst: Node pathToNodeMap: PathToNodeMap } | Error { diff --git a/src/lang/KclSingleton.ts b/src/lang/KclSingleton.ts index 8fa47120b..4020b3e8d 100644 --- a/src/lang/KclSingleton.ts +++ b/src/lang/KclSingleton.ts @@ -21,9 +21,10 @@ import { import { getNodeFromPath } from './queryAst' import { codeManager, editorManager, sceneInfra } from 'lib/singletons' import { Diagnostic } from '@codemirror/lint' +import { Node } from 'wasm-lib/kcl/bindings/Node' interface ExecuteArgs { - ast?: Program + ast?: Node zoomToFit?: boolean executionId?: number zoomOnRangeAndType?: { @@ -33,13 +34,13 @@ interface ExecuteArgs { } export class KclManager { - private _ast: Program = { + private _ast: Node = { body: [], start: 0, end: 0, nonCodeMeta: { nonCodeNodes: {}, - start: [], + startNodes: [], }, } private _execState: ExecState = emptyExecState() @@ -55,7 +56,7 @@ export class KclManager { engineCommandManager: EngineCommandManager private _isExecutingCallback: (arg: boolean) => void = () => {} - private _astCallBack: (arg: Program) => void = () => {} + private _astCallBack: (arg: Node) => void = () => {} private _programMemoryCallBack: (arg: ProgramMemory) => void = () => {} private _logsCallBack: (arg: string[]) => void = () => {} private _kclErrorsCallBack: (arg: KCLError[]) => void = () => {} @@ -181,7 +182,7 @@ export class KclManager { setWasmInitFailed, }: { setProgramMemory: (arg: ProgramMemory) => void - setAst: (arg: Program) => void + setAst: (arg: Node) => void setLogs: (arg: string[]) => void setKclErrors: (arg: KCLError[]) => void setIsExecuting: (arg: boolean) => void @@ -205,12 +206,12 @@ export class KclManager { end: 0, nonCodeMeta: { nonCodeNodes: {}, - start: [], + startNodes: [], }, } } - safeParse(code: string): Program | null { + safeParse(code: string): Node | null { const ast = parse(code) this.lints = [] this.kclErrors = [] @@ -377,7 +378,7 @@ export class KclManager { Array.from(this.engineCommandManager.artifactGraph).forEach( ([commandId, artifact]) => { if (!('codeRef' in artifact)) return - const _node1 = getNodeFromPath( + const _node1 = getNodeFromPath>( this.ast, artifact.codeRef.pathToNode, 'CallExpression' @@ -441,7 +442,7 @@ export class KclManager { // but should probably have think about which of the function to keep // This always updates the code state and editor and writes to the file system. async updateAst( - ast: Program, + ast: Node, execute: boolean, optionalParams?: { focusPath?: Array @@ -452,7 +453,7 @@ export class KclManager { } } ): Promise<{ - newAst: Program + newAst: Node selections?: Selections }> { const newCode = recast(ast) @@ -588,7 +589,7 @@ export class KclManager { } // Determines if there is no KCL code which means it is executing a blank KCL file - _isAstEmpty(ast: Program) { + _isAstEmpty(ast: Node) { return ast.start === 0 && ast.end === 0 && ast.body.length === 0 } } diff --git a/src/lang/langHelpers.ts b/src/lang/langHelpers.ts index 138b75809..f6eddeaf5 100644 --- a/src/lang/langHelpers.ts +++ b/src/lang/langHelpers.ts @@ -12,6 +12,7 @@ import { EngineCommandManager } from 'lang/std/engineConnection' import { KCLError } from 'lang/errors' import { Diagnostic } from '@codemirror/lint' import { IdGenerator } from 'wasm-lib/kcl/bindings/IdGenerator' +import { Node } from 'wasm-lib/kcl/bindings/Node' export type ToolTip = | 'lineTo' @@ -52,7 +53,7 @@ export async function executeAst({ programMemoryOverride, idGenerator, }: { - ast: Program + ast: Node engineCommandManager: EngineCommandManager useFakeExecutor?: boolean programMemoryOverride?: ProgramMemory diff --git a/src/lang/modifyAst.test.ts b/src/lang/modifyAst.test.ts index 7bc36905f..e57402e5d 100644 --- a/src/lang/modifyAst.test.ts +++ b/src/lang/modifyAst.test.ts @@ -21,6 +21,7 @@ import { enginelessExecutor } from '../lib/testHelpers' import { findUsesOfTagInPipe, getNodePathFromSourceRange } from './queryAst' import { err } from 'lib/trap' import { SimplifiedArgDetails } from './std/stdTypes' +import { Node } from 'wasm-lib/kcl/bindings/Node' beforeAll(async () => { await initPromise @@ -109,7 +110,7 @@ describe('Testing findUniqueName', () => { { type: 'Identifier', name: 'yo07', start: 0, end: 0 }, { type: 'Identifier', name: 'yo08', start: 0, end: 0 }, { type: 'Identifier', name: 'yo09', start: 0, end: 0 }, - ] satisfies Identifier[]), + ] satisfies Node[]), 'yo', 2 ) @@ -123,7 +124,7 @@ describe('Testing addSketchTo', () => { body: [], start: 0, end: 0, - nonCodeMeta: { nonCodeNodes: {}, start: [] }, + nonCodeMeta: { nonCodeNodes: {}, startNodes: [] }, }, 'yz' ) diff --git a/src/lang/modifyAst.ts b/src/lang/modifyAst.ts index 048bdf001..aec67b79c 100644 --- a/src/lang/modifyAst.ts +++ b/src/lang/modifyAst.ts @@ -42,12 +42,13 @@ import { SimplifiedArgDetails } from './std/stdTypes' import { TagDeclarator } from 'wasm-lib/kcl/bindings/TagDeclarator' import { Models } from '@kittycad/lib' import { ExtrudeFacePlane } from 'machines/modelingMachine' +import { Node } from 'wasm-lib/kcl/bindings/Node' export function startSketchOnDefault( - node: Program, + node: Node, axis: DefaultPlaneStr, name = '' -): { modifiedAst: Program; id: string; pathToNode: PathToNode } { +): { modifiedAst: Node; id: string; pathToNode: PathToNode } { const _node = { ...node } const _name = name || findUniqueName(node, KCL_DEFAULT_CONSTANT_PREFIXES.SKETCH) @@ -76,10 +77,10 @@ export function startSketchOnDefault( } export function addStartProfileAt( - node: Program, + node: Node, pathToNode: PathToNode, at: [number, number] -): { modifiedAst: Program; pathToNode: PathToNode } | Error { +): { modifiedAst: Node; pathToNode: PathToNode } | Error { const _node1 = getNodeFromPath( node, pathToNode, @@ -114,7 +115,7 @@ export function addStartProfileAt( } export function addSketchTo( - node: Program, + node: Node, axis: 'xy' | 'xz' | 'yz', name = '' ): { modifiedAst: Program; id: string; pathToNode: PathToNode } { @@ -210,7 +211,7 @@ export function mutateArrExp(node: Expr, updateWith: ArrayExpression): boolean { export function mutateObjExpProp( node: Expr, - updateWith: Literal | ArrayExpression, + updateWith: Node | Node, key: string ): boolean { if (node.type === 'ObjectExpression') { @@ -248,13 +249,13 @@ export function mutateObjExpProp( } export function extrudeSketch( - node: Program, + node: Node, pathToNode: PathToNode, shouldPipe = false, distance: Expr = createLiteral(4) ): | { - modifiedAst: Program + modifiedAst: Node pathToNode: PathToNode pathToExtrudeArg: PathToNode } @@ -343,13 +344,13 @@ export function extrudeSketch( } export function revolveSketch( - node: Program, + node: Node, pathToNode: PathToNode, shouldPipe = false, angle: Expr = createLiteral(4) ): | { - modifiedAst: Program + modifiedAst: Node pathToNode: PathToNode pathToRevolveArg: PathToNode } @@ -439,7 +440,7 @@ export function revolveSketch( } export function sketchOnExtrudedFace( - node: Program, + node: Node, sketchPathToNode: PathToNode, extrudePathToNode: PathToNode, info: ExtrudeFacePlane['faceInfo'] = { type: 'wall' } @@ -571,7 +572,7 @@ export function splitPathAtPipeExpression(pathToNode: PathToNode): { return splitPathAtPipeExpression(pathToNode.slice(0, -1)) } -export function createLiteral(value: string | number): Literal { +export function createLiteral(value: string | number): Node { return { type: 'Literal', start: 0, @@ -581,7 +582,7 @@ export function createLiteral(value: string | number): Literal { } } -export function createTagDeclarator(value: string): TagDeclarator { +export function createTagDeclarator(value: string): Node { return { type: 'TagDeclarator', start: 0, @@ -591,7 +592,7 @@ export function createTagDeclarator(value: string): TagDeclarator { } } -export function createIdentifier(name: string): Identifier { +export function createIdentifier(name: string): Node { return { type: 'Identifier', start: 0, @@ -601,7 +602,7 @@ export function createIdentifier(name: string): Identifier { } } -export function createPipeSubstitution(): PipeSubstitution { +export function createPipeSubstitution(): Node { return { type: 'PipeSubstitution', start: 0, @@ -612,7 +613,7 @@ export function createPipeSubstitution(): PipeSubstitution { export function createCallExpressionStdLib( name: string, args: CallExpression['arguments'] -): CallExpression { +): Node { return { type: 'CallExpression', start: 0, @@ -632,7 +633,7 @@ export function createCallExpressionStdLib( export function createCallExpression( name: string, args: CallExpression['arguments'] -): CallExpression { +): Node { return { type: 'CallExpression', start: 0, @@ -651,7 +652,7 @@ export function createCallExpression( export function createArrayExpression( elements: ArrayExpression['elements'] -): ArrayExpression { +): Node { return { type: 'ArrayExpression', start: 0, @@ -664,7 +665,7 @@ export function createArrayExpression( export function createPipeExpression( body: PipeExpression['body'] -): PipeExpression { +): Node { return { type: 'PipeExpression', start: 0, @@ -680,7 +681,7 @@ export function createVariableDeclaration( init: VariableDeclarator['init'], visibility: VariableDeclaration['visibility'] = 'default', kind: VariableDeclaration['kind'] = 'const' -): VariableDeclaration { +): Node { return { type: 'VariableDeclaration', start: 0, @@ -703,7 +704,7 @@ export function createVariableDeclaration( export function createObjectExpression(properties: { [key: string]: Expr -}): ObjectExpression { +}): Node { return { type: 'ObjectExpression', start: 0, @@ -724,7 +725,7 @@ export function createObjectExpression(properties: { export function createUnaryExpression( argument: UnaryExpression['argument'], operator: UnaryExpression['operator'] = '-' -): UnaryExpression { +): Node { return { type: 'UnaryExpression', start: 0, @@ -739,7 +740,7 @@ export function createBinaryExpression([left, operator, right]: [ BinaryExpression['left'], BinaryExpression['operator'], BinaryExpression['right'] -]): BinaryExpression { +]): Node { return { type: 'BinaryExpression', start: 0, @@ -754,19 +755,19 @@ export function createBinaryExpression([left, operator, right]: [ export function createBinaryExpressionWithUnary([left, right]: [ BinaryExpression['left'], BinaryExpression['right'] -]): BinaryExpression { +]): Node { if (right.type === 'UnaryExpression' && right.operator === '-') return createBinaryExpression([left, '-', right.argument]) return createBinaryExpression([left, '+', right]) } export function giveSketchFnCallTag( - ast: Program, + ast: Node, range: Selection['range'], tag?: string ): | { - modifiedAst: Program + modifiedAst: Node tag: string isTagExisting: boolean pathToNode: PathToNode @@ -801,7 +802,7 @@ export function giveSketchFnCallTag( } export function moveValueIntoNewVariablePath( - ast: Program, + ast: Node, programMemory: ProgramMemory, pathToNode: PathToNode, variableName: string @@ -834,12 +835,12 @@ export function moveValueIntoNewVariablePath( } export function moveValueIntoNewVariable( - ast: Program, + ast: Node, programMemory: ProgramMemory, sourceRange: Selection['range'], variableName: string ): { - modifiedAst: Program + modifiedAst: Node pathToReplacedNode?: PathToNode } { const meta = isNodeSafeToReplace(ast, sourceRange) @@ -872,17 +873,17 @@ export function moveValueIntoNewVariable( */ export function deleteSegmentFromPipeExpression( dependentRanges: SourceRange[], - modifiedAst: Program, + modifiedAst: Node, programMemory: ProgramMemory, code: string, pathToNode: PathToNode -): Program | Error { +): Node | Error { let _modifiedAst = structuredClone(modifiedAst) dependentRanges.forEach((range) => { const path = getNodePathFromSourceRange(_modifiedAst, range) - const callExp = getNodeFromPath( + const callExp = getNodeFromPath>( _modifiedAst, path, 'CallExpression', @@ -928,11 +929,11 @@ export function deleteSegmentFromPipeExpression( export function removeSingleConstraintInfo( pathToCallExp: PathToNode, argDetails: SimplifiedArgDetails, - ast: Program, + ast: Node, programMemory: ProgramMemory ): | { - modifiedAst: Program + modifiedAst: Node pathToNodeMap: PathToNodeMap } | false { @@ -954,12 +955,12 @@ export function removeSingleConstraintInfo( } export async function deleteFromSelection( - ast: Program, + ast: Node, selection: Selection, programMemory: ProgramMemory, getFaceDetails: (id: string) => Promise = () => ({} as any) -): Promise { +): Promise | Error> { const astClone = structuredClone(ast) const range = selection.range const path = getNodePathFromSourceRange(ast, range) @@ -1134,5 +1135,5 @@ export async function deleteFromSelection( } const nonCodeMetaEmpty = () => { - return { nonCodeNodes: {}, start: [] } + return { nonCodeNodes: {}, startNodes: [], start: 0, end: 0 } } diff --git a/src/lang/modifyAst/addFillet.ts b/src/lang/modifyAst/addFillet.ts index 47be3940b..e8a5ec0de 100644 --- a/src/lang/modifyAst/addFillet.ts +++ b/src/lang/modifyAst/addFillet.ts @@ -36,11 +36,12 @@ import { getSweepFromSuspectedPath, } from 'lang/std/artifactGraph' import { kclManager, engineCommandManager, editorManager } from 'lib/singletons' +import { Node } from 'wasm-lib/kcl/bindings/Node' // Apply Fillet To Selection export function applyFilletToSelection( - ast: Program, + ast: Node, selection: Selections, radius: KclCommandValue ): void | Error { @@ -55,10 +56,10 @@ export function applyFilletToSelection( } export function modifyAstCloneWithFilletAndTag( - ast: Program, + ast: Node, selection: Selections, radius: KclCommandValue -): { modifiedAst: Program; pathToFilletNode: Array } | Error { +): { modifiedAst: Node; pathToFilletNode: Array } | Error { let clonedAst = structuredClone(ast) const clonedAstForGetExtrude = structuredClone(ast) @@ -246,7 +247,7 @@ export function getPathToExtrudeForSegmentSelection( } async function updateAstAndFocus( - modifiedAst: Program, + modifiedAst: Node, pathToFilletNode: Array ) { const updatedAst = await kclManager.updateAst(modifiedAst, true, { @@ -258,7 +259,7 @@ async function updateAstAndFocus( } function mutateAstWithTagForSketchSegment( - astClone: Program, + astClone: Node, pathToSegmentNode: PathToNode ): { modifiedAst: Program; tag: string } | Error { const segmentNode = getNodeFromPath( @@ -292,7 +293,7 @@ function mutateAstWithTagForSketchSegment( function getEdgeTagCall( tag: string, selectionType: string -): Identifier | CallExpression { +): Node { let tagCall: Expr = createIdentifier(tag) // Modify the tag based on selectionType @@ -426,7 +427,7 @@ export const hasValidFilletSelection = ({ code, }: { selectionRanges: Selections - ast: Program + ast: Node code: string }) => { // check if there is anything filletable in the scene @@ -454,7 +455,7 @@ export const hasValidFilletSelection = ({ for (const selection of selectionRanges.codeBasedSelections) { // check if all selections are in sketchLineHelperMap const path = getNodePathFromSourceRange(ast, selection.range) - const segmentNode = getNodeFromPath( + const segmentNode = getNodeFromPath>( ast, path, 'CallExpression' @@ -534,7 +535,7 @@ export const isTagUsedInFillet = ({ ast, callExp, }: { - ast: Program + ast: Node callExp: CallExpression }): Array => { const tag = getTagFromCallExpression(callExp) diff --git a/src/lang/queryAst.ts b/src/lang/queryAst.ts index 6b91a76d1..1c0f01423 100644 --- a/src/lang/queryAst.ts +++ b/src/lang/queryAst.ts @@ -29,6 +29,7 @@ import { } from './std/sketchcombos' import { err } from 'lib/trap' import { ImportStatement } from 'wasm-lib/kcl/bindings/ImportStatement' +import { Node } from 'wasm-lib/kcl/bindings/Node' /** * Retrieves a node from a given path within a Program node structure, optionally stopping at a specified node type. @@ -121,12 +122,13 @@ export function getNodeFromPathCurry( } function moreNodePathFromSourceRange( - node: + node: Node< | Expr | ImportStatement | ExpressionStatement | VariableDeclaration - | ReturnStatement, + | ReturnStatement + >, sourceRange: Selection['range'], previousPath: PathToNode = [['body', '']] ): PathToNode { @@ -344,15 +346,16 @@ export function getNodePathFromSourceRange( return path } -type KCLNode = +type KCLNode = Node< | Expr | ExpressionStatement | VariableDeclaration | VariableDeclarator | ReturnStatement +> export function traverse( - node: KCLNode | Program, + node: KCLNode | Node, option: { enter?: (node: KCLNode, pathToNode: PathToNode) => void leave?: (node: KCLNode) => void @@ -512,9 +515,9 @@ export function findAllPreviousVariables( } type ReplacerFn = ( - _ast: Program, + _ast: Node, varName: string -) => { modifiedAst: Program; pathToReplaced: PathToNode } | Error +) => { modifiedAst: Node; pathToReplaced: PathToNode } | Error export function isNodeSafeToReplacePath( ast: Program, @@ -583,12 +586,12 @@ export function isNodeSafeToReplacePath( } export function isNodeSafeToReplace( - ast: Program, + ast: Node, sourceRange: [number, number] ): | { isSafe: boolean - value: Expr + value: Node replacer: ReplacerFn } | Error { @@ -837,7 +840,7 @@ export function findUsesOfTagInPipe( ? String(thirdParam.value) : thirdParam.name - const varDec = getNodeFromPath( + const varDec = getNodeFromPath>( ast, pathToNode, 'VariableDeclaration' @@ -898,7 +901,7 @@ export function hasSketchPipeBeenExtruded(selection: Selection, ast: Program) { } /** File must contain at least one sketch that has not been extruded already */ -export function doesSceneHaveSweepableSketch(ast: Program) { +export function doesSceneHaveSweepableSketch(ast: Node) { const theMap: any = {} traverse(ast as any, { enter(node) { diff --git a/src/lang/std/sketch.test.ts b/src/lang/std/sketch.test.ts index 37ca212c7..09079a9a3 100644 --- a/src/lang/std/sketch.test.ts +++ b/src/lang/std/sketch.test.ts @@ -17,6 +17,7 @@ import { import { getNodeFromPath, getNodePathFromSourceRange } from '../queryAst' import { enginelessExecutor } from '../../lib/testHelpers' import { err } from 'lib/trap' +import { Node } from 'wasm-lib/kcl/bindings/Node' const eachQuad: [number, [number, number]][] = [ [-315, [1, 1]], @@ -687,7 +688,7 @@ describe('testing getConstraintInfo', () => { ] if (err(ast)) return ast const pathToNode = getNodePathFromSourceRange(ast, sourceRange) - const callExp = getNodeFromPath( + const callExp = getNodeFromPath>( ast, pathToNode, 'CallExpression' @@ -841,7 +842,7 @@ describe('testing getConstraintInfo', () => { ] if (err(ast)) return ast const pathToNode = getNodePathFromSourceRange(ast, sourceRange) - const callExp = getNodeFromPath( + const callExp = getNodeFromPath>( ast, pathToNode, 'CallExpression' @@ -1197,7 +1198,7 @@ describe('testing getConstraintInfo', () => { ] if (err(ast)) return ast const pathToNode = getNodePathFromSourceRange(ast, sourceRange) - const callExp = getNodeFromPath( + const callExp = getNodeFromPath>( ast, pathToNode, 'CallExpression' diff --git a/src/lang/std/sketch.ts b/src/lang/std/sketch.ts index f1fb7699d..db64c5e03 100644 --- a/src/lang/std/sketch.ts +++ b/src/lang/std/sketch.ts @@ -55,6 +55,7 @@ import { err } from 'lib/trap' import { perpendicularDistance } from 'sketch-helpers' import { TagDeclarator } from 'wasm-lib/kcl/bindings/TagDeclarator' import { EdgeCutInfo } from 'machines/modelingMachine' +import { Node } from 'wasm-lib/kcl/bindings/Node' const STRAIGHT_SEGMENT_ERR = new Error( 'Invalid input, expected "straight-segment"' @@ -1785,7 +1786,7 @@ export const angledLineThatIntersects: SketchLineHelper = { ) } if (intersectTag !== -1) { - const tag = firstArg.properties[intersectTag]?.value as Identifier + const tag = firstArg.properties[intersectTag]?.value as Node const pathToTagProp: PathToNode = [ ...pathToObjectExp, [intersectTag, 'index'], @@ -1825,7 +1826,9 @@ export const updateStartProfileAtArgs: SketchLineHelper['updateArgs'] = ({ body: [], nonCodeMeta: { - start: [], + start: 0, + end: 0, + startNodes: [], nonCodeNodes: [], }, }, @@ -1865,7 +1868,7 @@ export const sketchLineHelperMap: { [key: string]: SketchLineHelper } = { } as const export function changeSketchArguments( - node: Program, + node: Node, programMemory: ProgramMemory, sourceRangeOrPath: | { @@ -1877,7 +1880,7 @@ export function changeSketchArguments( pathToNode: PathToNode }, input: SegmentInputs -): { modifiedAst: Program; pathToNode: PathToNode } | Error { +): { modifiedAst: Node; pathToNode: PathToNode } | Error { const _node = { ...node } const thePath = sourceRangeOrPath.type === 'sourceRange' @@ -1906,7 +1909,7 @@ export function changeSketchArguments( } export function getConstraintInfo( - callExpression: CallExpression, + callExpression: Node, code: string, pathToNode: PathToNode ): ConstrainInfo[] { @@ -1944,7 +1947,7 @@ export function compareVec2Epsilon2( } interface CreateLineFnCallArgs { - node: Program + node: Node programMemory: ProgramMemory input: SegmentInputs fnName: ToolTip @@ -1961,7 +1964,7 @@ export function addNewSketchLn({ spliceBetween = false, }: CreateLineFnCallArgs): | { - modifiedAst: Program + modifiedAst: Node pathToNode: PathToNode } | Error { @@ -1971,8 +1974,12 @@ export function addNewSketchLn({ return new Error('not a sketch line helper') } - getNodeFromPath(node, pathToNode, 'VariableDeclarator') - getNodeFromPath( + getNodeFromPath>( + node, + pathToNode, + 'VariableDeclarator' + ) + getNodeFromPath>( node, pathToNode, 'PipeExpression' @@ -1991,13 +1998,13 @@ export function addCallExpressionsToPipe({ pathToNode, expressions, }: { - node: Program + node: Node programMemory: ProgramMemory pathToNode: PathToNode - expressions: CallExpression[] + expressions: Node[] }) { const _node = { ...node } - const pipeExpression = getNodeFromPath( + const pipeExpression = getNodeFromPath>( _node, pathToNode, 'PipeExpression' @@ -2046,7 +2053,7 @@ export function replaceSketchLine({ replaceExistingCallback, referencedSegment, }: { - node: Program + node: Node programMemory: ProgramMemory pathToNode: PathToNode fnName: ToolTip @@ -2055,7 +2062,7 @@ export function replaceSketchLine({ referencedSegment?: Path }): | { - modifiedAst: Program + modifiedAst: Node valueUsedInTransform?: number pathToNode: PathToNode } @@ -2107,7 +2114,7 @@ function addTagToChamfer( edgeCutMeta: EdgeCutInfo | null ): | { - modifiedAst: Program + modifiedAst: Node tag: string } | Error { @@ -2234,7 +2241,7 @@ export function addTagForSketchOnFace( edgeCutMeta: EdgeCutInfo | null ): | { - modifiedAst: Program + modifiedAst: Node tag: string } | Error { @@ -2272,12 +2279,14 @@ function isAngleLiteral(lineArugement: Expr): boolean { : false } -type addTagFn = (a: AddTagInfo) => { modifiedAst: Program; tag: string } | Error +type addTagFn = ( + a: AddTagInfo +) => { modifiedAst: Node; tag: string } | Error function addTag(tagIndex = 2): addTagFn { return ({ node, pathToNode }) => { const _node = { ...node } - const callExpr = getNodeFromPath( + const callExpr = getNodeFromPath>( _node, pathToNode, 'CallExpression' diff --git a/src/lang/std/sketchcombos.ts b/src/lang/std/sketchcombos.ts index f9ea371a5..21ec43b78 100644 --- a/src/lang/std/sketchcombos.ts +++ b/src/lang/std/sketchcombos.ts @@ -49,6 +49,7 @@ import { getSketchSegmentFromSourceRange, } from './sketchConstraints' import { getAngle, roundOff, normaliseAngle } from '../../lib/utils' +import { Node } from 'wasm-lib/kcl/bindings/Node' export type LineInputsType = | 'xAbsolute' @@ -325,7 +326,7 @@ const setHorzVertDistanceCreateNode = if (isUndef(refNum) || err(literalArg)) return REF_NUM_ERR const valueUsedInTransform = roundOff(literalArg - refNum, 2) - let finalValue: Expr = createBinaryExpressionWithUnary([ + let finalValue: Node = createBinaryExpressionWithUnary([ createSegEnd(referenceSegName, !index), forceValueUsedInTransform || createLiteral(valueUsedInTransform), ]) @@ -1541,7 +1542,7 @@ export function transformSecondarySketchLinesTagFirst({ forceSegName, forceValueUsedInTransform, }: { - ast: Program + ast: Node selectionRanges: Selections transformInfos: TransformInfo[] programMemory: ProgramMemory @@ -1549,7 +1550,7 @@ export function transformSecondarySketchLinesTagFirst({ forceValueUsedInTransform?: BinaryPart }): | { - modifiedAst: Program + modifiedAst: Node valueUsedInTransform?: number pathToNodeMap: PathToNodeMap tagInfo: { @@ -1620,7 +1621,7 @@ export function transformAstSketchLines({ forceValueUsedInTransform, referencedSegmentRange, }: { - ast: Program + ast: Node selectionRanges: Selections | PathToNode[] transformInfos: TransformInfo[] programMemory: ProgramMemory @@ -1629,7 +1630,7 @@ export function transformAstSketchLines({ referencedSegmentRange?: Selection['range'] }): | { - modifiedAst: Program + modifiedAst: Node valueUsedInTransform?: number pathToNodeMap: PathToNodeMap } @@ -1647,7 +1648,7 @@ export function transformAstSketchLines({ const getNode = getNodeFromPathCurry(node, _pathToNode) - const callExp = getNode('CallExpression') + const callExp = getNode>('CallExpression') if (err(callExp)) return callExp const varDec = getNode('VariableDeclarator') if (err(varDec)) return varDec @@ -1806,13 +1807,16 @@ function createSegAngle(referenceSegName: string): BinaryPart { return createCallExpression('segAng', [createIdentifier(referenceSegName)]) } -function createSegEnd(referenceSegName: string, isX: boolean): CallExpression { +function createSegEnd( + referenceSegName: string, + isX: boolean +): Node { return createCallExpression(isX ? 'segEndX' : 'segEndY', [ createIdentifier(referenceSegName), ]) } -function createLastSeg(isX: boolean): CallExpression { +function createLastSeg(isX: boolean): Node { return createCallExpression(isX ? 'lastSegX' : 'lastSegY', [ createPipeSubstitution(), ]) @@ -1830,7 +1834,7 @@ export function getConstraintLevelFromSourceRange( ast: Program | Error ): Error | { range: [number, number]; level: ConstraintLevel } { if (err(ast)) return ast - const nodeMeta = getNodeFromPath( + const nodeMeta = getNodeFromPath>( ast, getNodePathFromSourceRange(ast, cursorRange), 'CallExpression' diff --git a/src/lang/std/stdTypes.ts b/src/lang/std/stdTypes.ts index fb9dcbb97..add077935 100644 --- a/src/lang/std/stdTypes.ts +++ b/src/lang/std/stdTypes.ts @@ -11,16 +11,17 @@ import { BinaryPart, } from '../wasm' import { LineInputsType } from './sketchcombos' +import { Node } from 'wasm-lib/kcl/bindings/Node' export interface ModifyAstBase { - node: Program + node: Node // TODO #896: Remove ProgramMemory from this interface previousProgramMemory: ProgramMemory pathToNode: PathToNode } export interface AddTagInfo { - node: Program + node: Node pathToNode: PathToNode } @@ -134,7 +135,7 @@ type _InputArg = * Which is why a union type is used that can be type narrowed using the {@link RawArg.type} property * {@link RawArg.expr} is common to all of these types */ -export type InputArg = _InputArg +export type InputArg = _InputArg> /** * {@link RawArg.expr} is the literal equivalent of whatever current expression is @@ -142,7 +143,7 @@ export type InputArg = _InputArg * but of course works for expressions like myVar + someFn() etc too * This is useful in cases where we want to "un-constrain" inputs to segments */ -type RawArg = _InputArg +type RawArg = _InputArg> export type InputArgs = Array @@ -186,7 +187,7 @@ export type CreateStdLibSketchCallExpr = (args: { inputs: InputArgs rawArgs: RawArgs referenceSegName: string - tag?: Expr + tag?: Node forceValueUsedInTransform?: BinaryPart referencedSegment?: Path }) => CreatedSketchExprResult | Error @@ -215,26 +216,26 @@ export interface ConstrainInfo { export interface SketchLineHelper { add: (a: addCall) => | { - modifiedAst: Program + modifiedAst: Node pathToNode: PathToNode valueUsedInTransform?: number } | Error updateArgs: (a: updateArgs) => | { - modifiedAst: Program + modifiedAst: Node pathToNode: PathToNode } | Error getTag: (a: CallExpression) => string | Error addTag: (a: AddTagInfo) => | { - modifiedAst: Program + modifiedAst: Node tag: string } | Error getConstraintInfo: ( - callExp: CallExpression, + callExp: Node, code: string, pathToNode: PathToNode ) => ConstrainInfo[] diff --git a/src/lang/wasm.test.ts b/src/lang/wasm.test.ts new file mode 100644 index 000000000..ea9be578f --- /dev/null +++ b/src/lang/wasm.test.ts @@ -0,0 +1,13 @@ +import { err } from 'lib/trap' +import { parse } from './wasm' +import { enginelessExecutor } from 'lib/testHelpers' + +it('can execute parsed AST', async () => { + const code = `x = 1 +// A comment.` + const ast = parse(code) + expect(err(ast)).toEqual(false) + const execState = await enginelessExecutor(ast) + expect(err(ast)).toEqual(false) + expect(execState.memory.get('x')?.value).toEqual(1) +}) diff --git a/src/lang/wasm.ts b/src/lang/wasm.ts index 705c9c555..adacac41d 100644 --- a/src/lang/wasm.ts +++ b/src/lang/wasm.ts @@ -42,6 +42,7 @@ import { ExecState as RawExecState } from '../wasm-lib/kcl/bindings/ExecState' import { ProgramMemory as RawProgramMemory } from '../wasm-lib/kcl/bindings/ProgramMemory' import { EnvironmentRef } from '../wasm-lib/kcl/bindings/EnvironmentRef' import { Environment } from '../wasm-lib/kcl/bindings/Environment' +import { Node } from 'wasm-lib/kcl/bindings/Node' export type { Program } from '../wasm-lib/kcl/bindings/Program' export type { Expr } from '../wasm-lib/kcl/bindings/Expr' @@ -122,11 +123,11 @@ export const initPromise = initialise() export const rangeTypeFix = (ranges: number[][]): [number, number][] => ranges.map(([start, end]) => [start, end]) -export const parse = (code: string | Error): Program | Error => { +export const parse = (code: string | Error): Node | Error => { if (err(code)) return code try { - const program: Program = parse_wasm(code) + const program: Node = parse_wasm(code) return program } catch (e: any) { // throw e @@ -378,7 +379,7 @@ export function sketchFromKclValue( } export const executor = async ( - node: Program, + node: Node, programMemory: ProgramMemory | Error = ProgramMemory.empty(), idGenerator: IdGenerator = defaultIdGenerator(), engineCommandManager: EngineCommandManager, @@ -402,7 +403,7 @@ export const executor = async ( } export const _executor = async ( - node: Program, + node: Node, programMemory: ProgramMemory | Error = ProgramMemory.empty(), idGenerator: IdGenerator = defaultIdGenerator(), engineCommandManager: EngineCommandManager, @@ -493,13 +494,13 @@ export function lexer(str: string): Token[] | Error { export const modifyAstForSketch = async ( engineCommandManager: EngineCommandManager, - ast: Program, + ast: Node, variableName: string, currentPlane: string, engineId: string -): Promise => { +): Promise> => { try { - const updatedAst: Program = await modify_ast_for_sketch_wasm( + const updatedAst: Node = await modify_ast_for_sketch_wasm( engineCommandManager, JSON.stringify(ast), variableName, diff --git a/src/lib/commandTypes.ts b/src/lib/commandTypes.ts index 72d0ab9b1..9371c7834 100644 --- a/src/lib/commandTypes.ts +++ b/src/lib/commandTypes.ts @@ -6,6 +6,7 @@ import { Identifier, Expr, VariableDeclaration } from 'lang/wasm' import { commandBarMachine } from 'machines/commandBarMachine' import { ReactNode } from 'react' import { MachineManager } from 'components/MachineManagerProvider' +import { Node } from 'wasm-lib/kcl/bindings/Node' type Icon = CustomIconName const PLATFORMS = ['both', 'web', 'desktop'] as const @@ -24,8 +25,8 @@ export interface KclExpression { } export interface KclExpressionWithVariable extends KclExpression { variableName: string - variableDeclarationAst: VariableDeclaration - variableIdentifierAst: Identifier + variableDeclarationAst: Node + variableIdentifierAst: Node insertIndex: number } export type KclCommandValue = KclExpression | KclExpressionWithVariable diff --git a/src/lib/selections.ts b/src/lib/selections.ts index 0e1ff2a15..ca165569a 100644 --- a/src/lib/selections.ts +++ b/src/lib/selections.ts @@ -36,6 +36,7 @@ import { getWallCodeRef, ArtifactId, } from 'lang/std/artifactGraph' +import { Node } from 'wasm-lib/kcl/bindings/Node' export const X_AXIS_UUID = 'ad792545-7fd3-482a-a602-a93924e3055b' export const Y_AXIS_UUID = '680fd157-266f-4b8a-984f-cdf46b8bdf01' @@ -244,7 +245,7 @@ export function getEventForSegmentSelection( const updatedAst = parse(codeManager.code) if (err(updatedAst)) return null - const nodeMeta = getNodeFromPath( + const nodeMeta = getNodeFromPath>( updatedAst, pathToNode, 'CallExpression' @@ -362,7 +363,7 @@ function updateSceneObjectColors(codeBasedSelections: Selection[]) { Object.values(sceneEntitiesManager.activeSegments).forEach((segmentGroup) => { if (!SEGMENT_BODIES_PLUS_PROFILE_START.includes(segmentGroup?.name)) return - const nodeMeta = getNodeFromPath( + const nodeMeta = getNodeFromPath>( updated, segmentGroup.userData.pathToNode, 'CallExpression' diff --git a/src/lib/testHelpers.ts b/src/lib/testHelpers.ts index e93b28a34..3b311a4f0 100644 --- a/src/lib/testHelpers.ts +++ b/src/lib/testHelpers.ts @@ -17,6 +17,7 @@ import { DefaultPlanes } from 'wasm-lib/kcl/bindings/DefaultPlanes' import { err, reportRejection } from 'lib/trap' import { toSync } from './utils' import { IdGenerator } from 'wasm-lib/kcl/bindings/IdGenerator' +import { Node } from 'wasm-lib/kcl/bindings/Node' type WebSocketResponse = Models['WebSocketResponse_type'] @@ -84,7 +85,7 @@ class MockEngineCommandManager { } export async function enginelessExecutor( - ast: Program | Error, + ast: Node | Error, pm: ProgramMemory | Error = ProgramMemory.empty(), idGenerator: IdGenerator = defaultIdGenerator() ): Promise { @@ -109,7 +110,7 @@ export async function enginelessExecutor( } export async function executor( - ast: Program, + ast: Node, pm: ProgramMemory = ProgramMemory.empty(), idGenerator: IdGenerator = defaultIdGenerator() ): Promise { diff --git a/src/wasm-lib/kcl-macros/tests/macro_test.rs b/src/wasm-lib/kcl-macros/tests/macro_test.rs index d4124bcc3..19408eb7e 100644 --- a/src/wasm-lib/kcl-macros/tests/macro_test.rs +++ b/src/wasm-lib/kcl-macros/tests/macro_test.rs @@ -1,6 +1,6 @@ extern crate alloc; use kcl_lib::ast::types::{ - BodyItem, Expr, Identifier, ItemVisibility, Literal, LiteralValue, NonCodeMeta, Program, VariableDeclaration, + BodyItem, Expr, Identifier, ItemVisibility, Literal, LiteralValue, Node, Program, VariableDeclaration, VariableDeclarator, VariableKind, }; use kcl_macros::parse; @@ -9,36 +9,46 @@ use pretty_assertions::assert_eq; #[test] fn basic() { let actual = parse!("const y = 4"); - let expected = Program { - start: 0, - end: 11, - body: vec![BodyItem::VariableDeclaration(Box::new(VariableDeclaration { - start: 0, - end: 11, - declarations: vec![VariableDeclarator { - start: 6, - end: 11, - id: Identifier { - start: 6, - end: 7, - name: "y".to_owned(), + let expected = Node { + inner: Program { + body: vec![BodyItem::VariableDeclaration(Box::new(Node::new( + VariableDeclaration { + declarations: vec![Node::new( + VariableDeclarator { + id: Node::new( + Identifier { + name: "y".to_owned(), + digest: None, + }, + 6, + 7, + ), + init: Expr::Literal(Box::new(Node::new( + Literal { + value: LiteralValue::IInteger(4), + raw: "4".to_owned(), + digest: None, + }, + 10, + 11, + ))), + digest: None, + }, + 6, + 11, + )], + visibility: ItemVisibility::Default, + kind: VariableKind::Const, digest: None, }, - init: Expr::Literal(Box::new(Literal { - start: 10, - end: 11, - value: LiteralValue::IInteger(4), - raw: "4".to_owned(), - digest: None, - })), - digest: None, - }], - visibility: ItemVisibility::Default, - kind: VariableKind::Const, + 0, + 11, + )))], + non_code_meta: Default::default(), digest: None, - }))], - non_code_meta: NonCodeMeta::default(), - digest: None, + }, + start: 0, + end: 11, }; assert_eq!(expected, actual); } diff --git a/src/wasm-lib/kcl/src/ast/modify.rs b/src/wasm-lib/kcl/src/ast/modify.rs index 195296639..432bb8cc6 100644 --- a/src/wasm-lib/kcl/src/ast/modify.rs +++ b/src/wasm-lib/kcl/src/ast/modify.rs @@ -16,6 +16,8 @@ use crate::{ executor::{Point2d, SourceRange}, }; +use super::types::Node; + type Point3d = kcmc::shared::Point3d; #[derive(Debug)] @@ -35,7 +37,7 @@ const EPSILON: f64 = 0.015625; // or 2^-6 /// a move or a new line. pub async fn modify_ast_for_sketch( engine: &Arc>, - program: &mut Program, + program: &mut Node, // The name of the sketch. sketch_name: &str, // The type of plane the sketch is on. `XY` or `XZ`, etc @@ -195,7 +197,7 @@ fn create_start_sketch_on( end: [f64; 2], plane: crate::executor::PlaneType, additional_lines: Vec<[f64; 2]>, -) -> Result { +) -> Result, KclError> { let start_sketch_on = CallExpression::new("startSketchOn", vec![Literal::new(plane.to_string().into()).into()])?; let start_profile_at = CallExpression::new( "startProfileAt", diff --git a/src/wasm-lib/kcl/src/ast/types.rs b/src/wasm-lib/kcl/src/ast/types.rs index 0f30dfca0..e197f149d 100644 --- a/src/wasm-lib/kcl/src/ast/types.rs +++ b/src/wasm-lib/kcl/src/ast/types.rs @@ -2,7 +2,8 @@ use std::{ collections::HashMap, - ops::RangeInclusive, + fmt, + ops::{Deref, DerefMut, RangeInclusive}, sync::{Arc, Mutex}, }; @@ -41,17 +42,111 @@ use digest::Digest; pub enum Definition<'a> { Variable(&'a VariableDeclarator), - Import(&'a ImportStatement), + Import(NodeRef<'a, ImportStatement>), } +#[derive(Debug, Default, Clone, Deserialize, Serialize, PartialEq, Eq, ts_rs::TS, Bake)] +#[databake(path = kcl_lib::ast::types)] +#[ts(export)] +pub struct Node { + #[serde(flatten)] + pub inner: T, + pub start: usize, + pub end: usize, +} + +impl schemars::JsonSchema for Node { + fn schema_name() -> String { + T::schema_name() + } + + fn json_schema(gen: &mut schemars::gen::SchemaGenerator) -> schemars::schema::Schema { + let mut child = T::json_schema(gen).into_object(); + // We want to add the start and end fields to the schema. + // Ideally we would add _any_ extra fields from the Node type automatically + // but this is a bit hard since this isn't a macro. + let Some(ref mut object) = &mut child.object else { + // This should never happen. But it will panic at compile time of docs if it does. + // Which is better than runtime. + panic!("Expected object schema for {}", T::schema_name()); + }; + object.properties.insert("start".to_string(), usize::json_schema(gen)); + object.properties.insert("end".to_string(), usize::json_schema(gen)); + + schemars::schema::Schema::Object(child.clone()) + } +} + +impl Node { + pub fn new(inner: T, start: usize, end: usize) -> Self { + Self { inner, start, end } + } + + pub fn no_src(inner: T) -> Self { + Self { + inner, + start: 0, + end: 0, + } + } + + pub fn boxed(inner: T, start: usize, end: usize) -> BoxNode { + Box::new(Node { inner, start, end }) + } + + pub fn as_source_ranges(&self) -> Vec { + vec![SourceRange([self.start, self.end])] + } +} + +impl Deref for Node { + type Target = T; + + fn deref(&self) -> &Self::Target { + &self.inner + } +} + +impl DerefMut for Node { + fn deref_mut(&mut self) -> &mut Self::Target { + &mut self.inner + } +} + +impl fmt::Display for Node { + fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { + self.inner.fmt(f) + } +} + +impl From> for crate::executor::SourceRange { + fn from(v: Node) -> Self { + Self([v.start, v.end]) + } +} + +impl From<&Node> for crate::executor::SourceRange { + fn from(v: &Node) -> Self { + Self([v.start, v.end]) + } +} + +impl From<&BoxNode> for crate::executor::SourceRange { + fn from(v: &BoxNode) -> Self { + Self([v.start, v.end]) + } +} + +pub type BoxNode = Box>; +pub type NodeList = Vec>; +pub type NodeRef<'a, T> = &'a Node; + /// A KCL program top level, or function body. #[derive(Debug, Default, Clone, Deserialize, Serialize, PartialEq, ts_rs::TS, JsonSchema, Bake)] #[databake(path = kcl_lib::ast::types)] #[ts(export)] #[serde(rename_all = "camelCase")] pub struct Program { - pub start: usize, - pub end: usize, pub body: Vec, #[serde(default, skip_serializing_if = "NonCodeMeta::is_empty")] pub non_code_meta: NonCodeMeta, @@ -61,35 +156,45 @@ pub struct Program { pub digest: Option, } -impl Program { - /// Is the last body item an expression? - pub fn ends_with_expr(&self) -> bool { - let Some(ref last) = self.body.last() else { - return false; - }; - matches!(last, BodyItem::ExpressionStatement(_)) +impl Node { + /// Walk the ast and get all the variables and tags as completion items. + pub fn completion_items<'a>(&'a self) -> Result> { + let completions = Arc::new(Mutex::new(vec![])); + crate::walk::walk(self, &|node: crate::walk::Node<'a>| { + let mut findings = completions.lock().map_err(|_| anyhow::anyhow!("mutex"))?; + match node { + crate::walk::Node::TagDeclarator(tag) => { + findings.push(tag.into()); + } + crate::walk::Node::VariableDeclaration(variable) => { + findings.extend::>(variable.into()); + } + _ => {} + } + Ok(true) + })?; + let x = completions.lock().unwrap(); + Ok(x.clone()) } - pub fn get_hover_value_for_position(&self, pos: usize, code: &str) -> Option { - // Check if we are in the non code meta. - if let Some(meta) = self.get_non_code_meta_for_position(pos) { - for node in &meta.start { - if node.contains(pos) { - // We only care about the shebang. - if let NonCodeValue::Shebang { value: _ } = &node.value { - let source_range: SourceRange = node.into(); - return Some(Hover::Comment { - value: r#"The `#!` at the start of a script, known as a shebang, specifies the path to the interpreter that should execute the script. This line is not necessary for your `kcl` to run in the modeling-app. You can safely delete it. If you wish to learn more about what you _can_ do with a shebang, read this doc: [zoo.dev/docs/faq/shebang](https://zoo.dev/docs/faq/shebang)."#.to_string(), - range: source_range.to_lsp_range(code), - }); - } + /// Returns all the lsp symbols in the program. + pub fn get_lsp_symbols<'a>(&'a self, code: &str) -> Result> { + let symbols = Arc::new(Mutex::new(vec![])); + crate::walk::walk(self, &|node: crate::walk::Node<'a>| { + let mut findings = symbols.lock().map_err(|_| anyhow::anyhow!("mutex"))?; + match node { + crate::walk::Node::TagDeclarator(tag) => { + findings.extend::>(tag.get_lsp_symbols(code)); } + crate::walk::Node::VariableDeclaration(variable) => { + findings.extend::>(variable.get_lsp_symbols(code)); + } + _ => {} } - } - - let value = self.get_expr_for_position(pos)?; - - value.get_hover_value_for_position(pos, code) + Ok(true) + })?; + let x = symbols.lock().unwrap(); + Ok(x.clone()) } /// Check the provided Program for any lint findings. @@ -120,25 +225,37 @@ impl Program { } Ok(findings) } +} - /// Walk the ast and get all the variables and tags as completion items. - pub fn completion_items<'a>(&'a self) -> Result> { - let completions = Arc::new(Mutex::new(vec![])); - crate::walk::walk(self, &|node: crate::walk::Node<'a>| { - let mut findings = completions.lock().map_err(|_| anyhow::anyhow!("mutex"))?; - match node { - crate::walk::Node::TagDeclarator(tag) => { - findings.push(tag.into()); +impl Program { + /// Is the last body item an expression? + pub fn ends_with_expr(&self) -> bool { + let Some(ref last) = self.body.last() else { + return false; + }; + matches!(last, BodyItem::ExpressionStatement(_)) + } + + pub fn get_hover_value_for_position(&self, pos: usize, code: &str) -> Option { + // Check if we are in the non code meta. + if let Some(meta) = self.get_non_code_meta_for_position(pos) { + for node in &meta.start_nodes { + if node.contains(pos) { + // We only care about the shebang. + if let NonCodeValue::Shebang { value: _ } = &node.value { + let source_range: SourceRange = node.into(); + return Some(Hover::Comment { + value: r#"The `#!` at the start of a script, known as a shebang, specifies the path to the interpreter that should execute the script. This line is not necessary for your `kcl` to run in the modeling-app. You can safely delete it. If you wish to learn more about what you _can_ do with a shebang, read this doc: [zoo.dev/docs/faq/shebang](https://zoo.dev/docs/faq/shebang)."#.to_string(), + range: source_range.to_lsp_range(code), + }); + } } - crate::walk::Node::VariableDeclaration(variable) => { - findings.extend::>(variable.into()); - } - _ => {} } - Ok(true) - })?; - let x = completions.lock().unwrap(); - Ok(x.clone()) + } + + let value = self.get_expr_for_position(pos)?; + + value.get_hover_value_for_position(pos, code) } /// Returns the body item that includes the given character position. @@ -207,26 +324,6 @@ impl Program { None } - /// Returns all the lsp symbols in the program. - pub fn get_lsp_symbols<'a>(&'a self, code: &str) -> Result> { - let symbols = Arc::new(Mutex::new(vec![])); - crate::walk::walk(self, &|node: crate::walk::Node<'a>| { - let mut findings = symbols.lock().map_err(|_| anyhow::anyhow!("mutex"))?; - match node { - crate::walk::Node::TagDeclarator(tag) => { - findings.extend::>(tag.get_lsp_symbols(code)); - } - crate::walk::Node::VariableDeclaration(variable) => { - findings.extend::>(variable.get_lsp_symbols(code)); - } - _ => {} - } - Ok(true) - })?; - let x = symbols.lock().unwrap(); - Ok(x.clone()) - } - // Return all the lsp folding ranges in the program. pub fn get_lsp_folding_ranges(&self) -> Vec { let mut ranges = vec![]; @@ -338,7 +435,7 @@ impl Program { } /// Replace a variable declaration with the given name with a new one. - pub fn replace_variable(&mut self, name: &str, declarator: VariableDeclarator) { + pub fn replace_variable(&mut self, name: &str, declarator: Node) { for item in &mut self.body { match item { BodyItem::ImportStatement(_) => { @@ -407,73 +504,33 @@ impl Program { } } -pub trait ValueMeta { - fn start(&self) -> usize; - - fn end(&self) -> usize; -} - -macro_rules! impl_value_meta { - {$name:ident} => { - impl crate::ast::types::ValueMeta for $name { - fn start(&self) -> usize { - self.start - } - - fn end(&self) -> usize { - self.end - } - } - - impl From<$name> for crate::executor::SourceRange { - fn from(v: $name) -> Self { - Self([v.start, v.end]) - } - } - - impl From<&$name> for crate::executor::SourceRange { - fn from(v: &$name) -> Self { - Self([v.start, v.end]) - } - } - - impl From<&Box<$name>> for crate::executor::SourceRange { - fn from(v: &Box<$name>) -> Self { - Self([v.start, v.end]) - } - } - }; -} - -pub(crate) use impl_value_meta; - #[derive(Debug, Clone, Deserialize, Serialize, PartialEq, ts_rs::TS, JsonSchema, Bake)] #[databake(path = kcl_lib::ast::types)] #[ts(export)] #[serde(tag = "type")] pub enum BodyItem { - ImportStatement(Box), - ExpressionStatement(ExpressionStatement), - VariableDeclaration(Box), - ReturnStatement(ReturnStatement), + ImportStatement(BoxNode), + ExpressionStatement(Node), + VariableDeclaration(BoxNode), + ReturnStatement(Node), } impl BodyItem { pub fn start(&self) -> usize { match self { - BodyItem::ImportStatement(stmt) => stmt.start(), - BodyItem::ExpressionStatement(expression_statement) => expression_statement.start(), - BodyItem::VariableDeclaration(variable_declaration) => variable_declaration.start(), - BodyItem::ReturnStatement(return_statement) => return_statement.start(), + BodyItem::ImportStatement(stmt) => stmt.start, + BodyItem::ExpressionStatement(expression_statement) => expression_statement.start, + BodyItem::VariableDeclaration(variable_declaration) => variable_declaration.start, + BodyItem::ReturnStatement(return_statement) => return_statement.start, } } pub fn end(&self) -> usize { match self { - BodyItem::ImportStatement(stmt) => stmt.end(), - BodyItem::ExpressionStatement(expression_statement) => expression_statement.end(), - BodyItem::VariableDeclaration(variable_declaration) => variable_declaration.end(), - BodyItem::ReturnStatement(return_statement) => return_statement.end(), + BodyItem::ImportStatement(stmt) => stmt.end, + BodyItem::ExpressionStatement(expression_statement) => expression_statement.end, + BodyItem::VariableDeclaration(variable_declaration) => variable_declaration.end, + BodyItem::ReturnStatement(return_statement) => return_statement.end, } } } @@ -496,20 +553,20 @@ impl From<&BodyItem> for SourceRange { #[ts(export)] #[serde(tag = "type")] pub enum Expr { - Literal(Box), - Identifier(Box), - TagDeclarator(Box), - BinaryExpression(Box), - FunctionExpression(Box), - CallExpression(Box), - PipeExpression(Box), - PipeSubstitution(Box), - ArrayExpression(Box), - ArrayRangeExpression(Box), - ObjectExpression(Box), - MemberExpression(Box), - UnaryExpression(Box), - IfExpression(Box), + Literal(BoxNode), + Identifier(BoxNode), + TagDeclarator(BoxNode), + BinaryExpression(BoxNode), + FunctionExpression(BoxNode), + CallExpression(BoxNode), + PipeExpression(BoxNode), + PipeSubstitution(BoxNode), + ArrayExpression(BoxNode), + ArrayRangeExpression(BoxNode), + ObjectExpression(BoxNode), + MemberExpression(BoxNode), + UnaryExpression(BoxNode), + IfExpression(BoxNode), None(KclNone), } @@ -582,40 +639,40 @@ impl Expr { pub fn start(&self) -> usize { match self { - Expr::Literal(literal) => literal.start(), - Expr::Identifier(identifier) => identifier.start(), - Expr::TagDeclarator(tag) => tag.start(), - Expr::BinaryExpression(binary_expression) => binary_expression.start(), - Expr::FunctionExpression(function_expression) => function_expression.start(), - Expr::CallExpression(call_expression) => call_expression.start(), - Expr::PipeExpression(pipe_expression) => pipe_expression.start(), - Expr::PipeSubstitution(pipe_substitution) => pipe_substitution.start(), - Expr::ArrayExpression(array_expression) => array_expression.start(), - Expr::ArrayRangeExpression(array_range) => array_range.start(), - Expr::ObjectExpression(object_expression) => object_expression.start(), - Expr::MemberExpression(member_expression) => member_expression.start(), - Expr::UnaryExpression(unary_expression) => unary_expression.start(), - Expr::IfExpression(expr) => expr.start(), + Expr::Literal(literal) => literal.start, + Expr::Identifier(identifier) => identifier.start, + Expr::TagDeclarator(tag) => tag.start, + Expr::BinaryExpression(binary_expression) => binary_expression.start, + Expr::FunctionExpression(function_expression) => function_expression.start, + Expr::CallExpression(call_expression) => call_expression.start, + Expr::PipeExpression(pipe_expression) => pipe_expression.start, + Expr::PipeSubstitution(pipe_substitution) => pipe_substitution.start, + Expr::ArrayExpression(array_expression) => array_expression.start, + Expr::ArrayRangeExpression(array_range) => array_range.start, + Expr::ObjectExpression(object_expression) => object_expression.start, + Expr::MemberExpression(member_expression) => member_expression.start, + Expr::UnaryExpression(unary_expression) => unary_expression.start, + Expr::IfExpression(expr) => expr.start, Expr::None(none) => none.start, } } pub fn end(&self) -> usize { match self { - Expr::Literal(literal) => literal.end(), - Expr::Identifier(identifier) => identifier.end(), - Expr::TagDeclarator(tag) => tag.end(), - Expr::BinaryExpression(binary_expression) => binary_expression.end(), - Expr::FunctionExpression(function_expression) => function_expression.end(), - Expr::CallExpression(call_expression) => call_expression.end(), - Expr::PipeExpression(pipe_expression) => pipe_expression.end(), - Expr::PipeSubstitution(pipe_substitution) => pipe_substitution.end(), - Expr::ArrayExpression(array_expression) => array_expression.end(), - Expr::ArrayRangeExpression(array_range) => array_range.end(), - Expr::ObjectExpression(object_expression) => object_expression.end(), - Expr::MemberExpression(member_expression) => member_expression.end(), - Expr::UnaryExpression(unary_expression) => unary_expression.end(), - Expr::IfExpression(expr) => expr.end(), + Expr::Literal(literal) => literal.end, + Expr::Identifier(identifier) => identifier.end, + Expr::TagDeclarator(tag) => tag.end, + Expr::BinaryExpression(binary_expression) => binary_expression.end, + Expr::FunctionExpression(function_expression) => function_expression.end, + Expr::CallExpression(call_expression) => call_expression.end, + Expr::PipeExpression(pipe_expression) => pipe_expression.end, + Expr::PipeSubstitution(pipe_substitution) => pipe_substitution.end, + Expr::ArrayExpression(array_expression) => array_expression.end, + Expr::ArrayRangeExpression(array_range) => array_range.end, + Expr::ObjectExpression(object_expression) => object_expression.end, + Expr::MemberExpression(member_expression) => member_expression.end, + Expr::UnaryExpression(unary_expression) => unary_expression.end, + Expr::IfExpression(expr) => expr.end, Expr::None(none) => none.end, } } @@ -715,13 +772,13 @@ impl From<&Expr> for SourceRange { #[ts(export)] #[serde(tag = "type")] pub enum BinaryPart { - Literal(Box), - Identifier(Box), - BinaryExpression(Box), - CallExpression(Box), - UnaryExpression(Box), - MemberExpression(Box), - IfExpression(Box), + Literal(BoxNode), + Identifier(BoxNode), + BinaryExpression(BoxNode), + CallExpression(BoxNode), + UnaryExpression(BoxNode), + MemberExpression(BoxNode), + IfExpression(BoxNode), } impl From for SourceRange { @@ -770,25 +827,25 @@ impl BinaryPart { pub fn start(&self) -> usize { match self { - BinaryPart::Literal(literal) => literal.start(), - BinaryPart::Identifier(identifier) => identifier.start(), - BinaryPart::BinaryExpression(binary_expression) => binary_expression.start(), - BinaryPart::CallExpression(call_expression) => call_expression.start(), - BinaryPart::UnaryExpression(unary_expression) => unary_expression.start(), - BinaryPart::MemberExpression(member_expression) => member_expression.start(), - BinaryPart::IfExpression(e) => e.start(), + BinaryPart::Literal(literal) => literal.start, + BinaryPart::Identifier(identifier) => identifier.start, + BinaryPart::BinaryExpression(binary_expression) => binary_expression.start, + BinaryPart::CallExpression(call_expression) => call_expression.start, + BinaryPart::UnaryExpression(unary_expression) => unary_expression.start, + BinaryPart::MemberExpression(member_expression) => member_expression.start, + BinaryPart::IfExpression(e) => e.start, } } pub fn end(&self) -> usize { match self { - BinaryPart::Literal(literal) => literal.end(), - BinaryPart::Identifier(identifier) => identifier.end(), - BinaryPart::BinaryExpression(binary_expression) => binary_expression.end(), - BinaryPart::CallExpression(call_expression) => call_expression.end(), - BinaryPart::UnaryExpression(unary_expression) => unary_expression.end(), - BinaryPart::MemberExpression(member_expression) => member_expression.end(), - BinaryPart::IfExpression(e) => e.end(), + BinaryPart::Literal(literal) => literal.end, + BinaryPart::Identifier(identifier) => identifier.end, + BinaryPart::BinaryExpression(binary_expression) => binary_expression.end, + BinaryPart::CallExpression(call_expression) => call_expression.end, + BinaryPart::UnaryExpression(unary_expression) => unary_expression.end, + BinaryPart::MemberExpression(member_expression) => member_expression.end, + BinaryPart::IfExpression(e) => e.end, } } @@ -836,8 +893,6 @@ impl BinaryPart { #[ts(export)] #[serde(tag = "type")] pub struct NonCodeNode { - pub start: usize, - pub end: usize, pub value: NonCodeValue, #[serde(default, skip_serializing_if = "Option::is_none")] @@ -845,33 +900,11 @@ pub struct NonCodeNode { pub digest: Option, } -impl From for SourceRange { - fn from(value: NonCodeNode) -> Self { - Self([value.start, value.end]) - } -} - -impl From<&NonCodeNode> for SourceRange { - fn from(value: &NonCodeNode) -> Self { - Self([value.start, value.end]) - } -} - -impl NonCodeNode { +impl Node { pub fn contains(&self, pos: usize) -> bool { self.start <= pos && pos <= self.end } - pub fn value(&self) -> String { - match &self.value { - NonCodeValue::Shebang { value } => value.clone(), - NonCodeValue::InlineComment { value, style: _ } => value.clone(), - NonCodeValue::BlockComment { value, style: _ } => value.clone(), - NonCodeValue::NewLineBlockComment { value, style: _ } => value.clone(), - NonCodeValue::NewLine => "\n\n".to_string(), - } - } - pub fn format(&self, indentation: &str) -> String { match &self.value { NonCodeValue::Shebang { value } => format!("{}\n\n", value), @@ -911,6 +944,18 @@ impl NonCodeNode { } } +impl NonCodeNode { + pub fn value(&self) -> String { + match &self.value { + NonCodeValue::Shebang { value } => value.clone(), + NonCodeValue::InlineComment { value, style: _ } => value.clone(), + NonCodeValue::BlockComment { value, style: _ } => value.clone(), + NonCodeValue::NewLineBlockComment { value, style: _ } => value.clone(), + NonCodeValue::NewLine => "\n\n".to_string(), + } + } +} + #[derive(Debug, Clone, Deserialize, Serialize, PartialEq, ts_rs::TS, JsonSchema, Bake)] #[databake(path = kcl_lib::ast::types)] #[ts(export)] @@ -983,8 +1028,8 @@ pub enum NonCodeValue { #[ts(export)] #[serde(rename_all = "camelCase")] pub struct NonCodeMeta { - pub non_code_nodes: HashMap>, - pub start: Vec, + pub non_code_nodes: HashMap>, + pub start_nodes: NodeList, #[serde(default, skip_serializing_if = "Option::is_none")] #[ts(optional)] @@ -994,7 +1039,7 @@ pub struct NonCodeMeta { impl NonCodeMeta { /// Does this contain anything? pub fn is_empty(&self) -> bool { - self.non_code_nodes.is_empty() && self.start.is_empty() + self.non_code_nodes.is_empty() && self.start_nodes.is_empty() } /// How many non-code values does this have? @@ -1013,8 +1058,8 @@ impl<'de> Deserialize<'de> for NonCodeMeta { #[derive(Deserialize)] #[serde(rename_all = "camelCase")] struct NonCodeMetaHelper { - non_code_nodes: HashMap>, - start: Vec, + non_code_nodes: HashMap>, + start_nodes: NodeList, } let helper = NonCodeMetaHelper::deserialize(deserializer)?; @@ -1025,19 +1070,19 @@ impl<'de> Deserialize<'de> for NonCodeMeta { .collect::, _>>()?; Ok(NonCodeMeta { non_code_nodes, - start: helper.start, + start_nodes: helper.start_nodes, digest: None, }) } } impl NonCodeMeta { - pub fn insert(&mut self, i: usize, new: NonCodeNode) { + pub fn insert(&mut self, i: usize, new: Node) { self.non_code_nodes.entry(i).or_default().push(new); } pub fn contains(&self, pos: usize) -> bool { - if self.start.iter().any(|node| node.contains(pos)) { + if self.start_nodes.iter().any(|node| node.contains(pos)) { return true; } @@ -1053,28 +1098,16 @@ impl NonCodeMeta { #[serde(tag = "type")] pub struct ImportItem { /// Name of the item to import. - pub name: Identifier, + pub name: Node, /// Rename the item using an identifier after "as". - pub alias: Option, - - pub start: usize, - pub end: usize, + pub alias: Option>, #[serde(default, skip_serializing_if = "Option::is_none")] #[ts(optional)] pub digest: Option, } -impl_value_meta!(ImportItem); - -impl ImportItem { - pub fn identifier(&self) -> &str { - match &self.alias { - Some(alias) => &alias.name, - None => &self.name.name, - } - } - +impl Node { pub fn rename_symbol(&mut self, new_name: &str, pos: usize) -> Option { match &mut self.alias { Some(alias) => { @@ -1095,6 +1128,15 @@ impl ImportItem { } } } +} + +impl ImportItem { + pub fn identifier(&self) -> &str { + match &self.alias { + Some(alias) => &alias.name, + None => &self.name.name, + } + } pub fn rename_identifiers(&mut self, old_name: &str, new_name: &str) { if let Some(alias) = &mut self.alias { @@ -1108,9 +1150,7 @@ impl ImportItem { #[ts(export)] #[serde(tag = "type")] pub struct ImportStatement { - pub start: usize, - pub end: usize, - pub items: Vec, + pub items: NodeList, pub path: String, pub raw_path: String, @@ -1119,9 +1159,7 @@ pub struct ImportStatement { pub digest: Option, } -impl_value_meta!(ImportStatement); - -impl ImportStatement { +impl Node { pub fn get_constraint_level(&self) -> ConstraintLevel { ConstraintLevel::Full { source_ranges: vec![self.into()], @@ -1140,7 +1178,9 @@ impl ImportStatement { } None } +} +impl ImportStatement { pub fn rename_identifiers(&mut self, old_name: &str, new_name: &str) { for item in &mut self.items { item.rename_identifiers(old_name, new_name); @@ -1153,8 +1193,6 @@ impl ImportStatement { #[ts(export)] #[serde(tag = "type")] pub struct ExpressionStatement { - pub start: usize, - pub end: usize, pub expression: Expr, #[serde(default, skip_serializing_if = "Option::is_none")] @@ -1162,16 +1200,12 @@ pub struct ExpressionStatement { pub digest: Option, } -impl_value_meta!(ExpressionStatement); - #[derive(Debug, Clone, Deserialize, Serialize, PartialEq, ts_rs::TS, JsonSchema, Bake)] #[databake(path = kcl_lib::ast::types)] #[ts(export)] #[serde(tag = "type")] pub struct CallExpression { - pub start: usize, - pub end: usize, - pub callee: Identifier, + pub callee: Node, pub arguments: Vec, pub optional: bool, @@ -1180,24 +1214,39 @@ pub struct CallExpression { pub digest: Option, } -impl_value_meta!(CallExpression); - -impl From for Expr { - fn from(call_expression: CallExpression) -> Self { +impl From> for Expr { + fn from(call_expression: Node) -> Self { Expr::CallExpression(Box::new(call_expression)) } } +impl Node { + /// Return the constraint level for this call expression. + pub fn get_constraint_level(&self) -> ConstraintLevel { + if self.arguments.is_empty() { + return ConstraintLevel::Ignore { + source_ranges: vec![self.into()], + }; + } + + // Iterate over the arguments and get the constraint level for each one. + let mut constraint_levels = ConstraintLevels::new(); + for arg in &self.arguments { + constraint_levels.push(arg.get_constraint_level()); + } + + constraint_levels.get_constraint_level(self.into()) + } +} + impl CallExpression { - pub fn new(name: &str, arguments: Vec) -> Result { - Ok(Self { - start: 0, - end: 0, + pub fn new(name: &str, arguments: Vec) -> Result, KclError> { + Ok(Node::no_src(Self { callee: Identifier::new(name), arguments, optional: false, digest: None, - }) + })) } /// Is at least one argument the '%' i.e. the substitution operator? @@ -1207,10 +1256,6 @@ impl CallExpression { .any(|arg| matches!(arg, Expr::PipeSubstitution(_))) } - pub fn as_source_ranges(&self) -> Vec { - vec![SourceRange([self.start, self.end])] - } - pub fn replace_value(&mut self, source_range: SourceRange, new_value: Expr) { for arg in &mut self.arguments { arg.replace_value(source_range, new_value.clone()); @@ -1249,23 +1294,6 @@ impl CallExpression { arg.rename_identifiers(old_name, new_name); } } - - /// Return the constraint level for this call expression. - pub fn get_constraint_level(&self) -> ConstraintLevel { - if self.arguments.is_empty() { - return ConstraintLevel::Ignore { - source_ranges: vec![self.into()], - }; - } - - // Iterate over the arguments and get the constraint level for each one. - let mut constraint_levels = ConstraintLevels::new(); - for arg in &self.arguments { - constraint_levels.push(arg.get_constraint_level()); - } - - constraint_levels.get_constraint_level(self.into()) - } } /// A function declaration. @@ -1329,9 +1357,7 @@ impl ItemVisibility { #[ts(export)] #[serde(tag = "type")] pub struct VariableDeclaration { - pub start: usize, - pub end: usize, - pub declarations: Vec, + pub declarations: NodeList, #[serde(default, skip_serializing_if = "ItemVisibility::is_default")] pub visibility: ItemVisibility, pub kind: VariableKind, // Change to enum if there are specific values @@ -1341,18 +1367,18 @@ pub struct VariableDeclaration { pub digest: Option, } -impl From<&VariableDeclaration> for Vec { - fn from(declaration: &VariableDeclaration) -> Self { +impl From<&Node> for Vec { + fn from(declaration: &Node) -> Self { let mut completions = vec![]; for variable in &declaration.declarations { completions.push(CompletionItem { label: variable.id.name.to_string(), label_details: None, - kind: Some(match declaration.kind { + kind: Some(match declaration.inner.kind { VariableKind::Const => CompletionItemKind::CONSTANT, VariableKind::Fn => CompletionItemKind::FUNCTION, }), - detail: Some(declaration.kind.to_string()), + detail: Some(declaration.inner.kind.to_string()), documentation: None, deprecated: None, preselect: None, @@ -1373,19 +1399,7 @@ impl From<&VariableDeclaration> for Vec { } } -impl_value_meta!(VariableDeclaration); - -impl VariableDeclaration { - pub fn new(declarations: Vec, visibility: ItemVisibility, kind: VariableKind) -> Self { - Self { - start: 0, - end: 0, - declarations, - visibility, - kind, - digest: None, - } - } +impl Node { pub fn get_lsp_folding_range(&self) -> Option { let recasted = self.recast(&FormatOptions::default(), 0); // If the recasted value only has one line, don't fold it. @@ -1397,15 +1411,47 @@ impl VariableDeclaration { let first_line = recasted.lines().next().unwrap().to_string(); Some(FoldingRange { - start_line: (self.start() + first_line.len()) as u32, + start_line: (self.start + first_line.len()) as u32, start_character: None, - end_line: self.end() as u32, + end_line: self.end as u32, end_character: None, kind: Some(FoldingRangeKind::Region), collapsed_text: Some(first_line), }) } + /// Rename the variable declaration at the given position. + /// This returns the old name of the variable, if it found one. + pub fn rename_symbol(&mut self, new_name: &str, pos: usize) -> Option { + // The position must be within the variable declaration. + let source_range: SourceRange = self.clone().into(); + if !source_range.contains(pos) { + return None; + } + + for declaration in &mut self.declarations { + let declaration_source_range: SourceRange = declaration.id.clone().into(); + if declaration_source_range.contains(pos) { + let old_name = declaration.id.name.clone(); + declaration.id.name = new_name.to_string(); + return Some(old_name); + } + } + + None + } +} + +impl VariableDeclaration { + pub fn new(declarations: NodeList, visibility: ItemVisibility, kind: VariableKind) -> Self { + Self { + declarations, + visibility, + kind, + digest: None, + } + } + pub fn replace_value(&mut self, source_range: SourceRange, new_value: Expr) { for declaration in &mut self.declarations { declaration.init.replace_value(source_range, new_value.clone()); @@ -1436,27 +1482,6 @@ impl VariableDeclaration { None } - /// Rename the variable declaration at the given position. - /// This returns the old name of the variable, if it found one. - pub fn rename_symbol(&mut self, new_name: &str, pos: usize) -> Option { - // The position must be within the variable declaration. - let source_range: SourceRange = self.clone().into(); - if !source_range.contains(pos) { - return None; - } - - for declaration in &mut self.declarations { - let declaration_source_range: SourceRange = declaration.id.clone().into(); - if declaration_source_range.contains(pos) { - let old_name = declaration.id.name.clone(); - declaration.id.name = new_name.to_string(); - return Some(old_name); - } - } - - None - } - pub fn rename_identifiers(&mut self, old_name: &str, new_name: &str) { for declaration in &mut self.declarations { // Skip the init for the variable with the new name since it is the one we are renaming. @@ -1585,10 +1610,8 @@ impl VariableKind { #[ts(export)] #[serde(tag = "type")] pub struct VariableDeclarator { - pub start: usize, - pub end: usize, /// The identifier of the variable. - pub id: Identifier, + pub id: Node, /// The value of the variable. pub init: Expr, @@ -1597,17 +1620,13 @@ pub struct VariableDeclarator { pub digest: Option, } -impl_value_meta!(VariableDeclarator); - impl VariableDeclarator { - pub fn new(name: &str, init: Expr) -> Self { - Self { - start: 0, - end: 0, + pub fn new(name: &str, init: Expr) -> Node { + Node::no_src(Self { id: Identifier::new(name), init, digest: None, - } + }) } pub fn get_constraint_level(&self) -> ConstraintLevel { @@ -1620,8 +1639,6 @@ impl VariableDeclarator { #[ts(export)] #[serde(tag = "type")] pub struct Literal { - pub start: usize, - pub end: usize, pub value: LiteralValue, pub raw: String, @@ -1630,19 +1647,7 @@ pub struct Literal { pub digest: Option, } -impl_value_meta!(Literal); - -impl Literal { - pub fn new(value: LiteralValue) -> Self { - Self { - start: 0, - end: 0, - raw: JValue::from(value.clone()).to_string(), - value, - digest: None, - } - } - +impl Node { /// Get the constraint level for this literal. /// Literals are always not constrained. pub fn get_constraint_level(&self) -> ConstraintLevel { @@ -1652,8 +1657,18 @@ impl Literal { } } -impl From for KclValue { - fn from(literal: Literal) -> Self { +impl Literal { + pub fn new(value: LiteralValue) -> Node { + Node::no_src(Self { + raw: JValue::from(value.clone()).to_string(), + value, + digest: None, + }) + } +} + +impl From> for KclValue { + fn from(literal: Node) -> Self { KclValue::UserVal(UserVal { value: JValue::from(literal.value.clone()), meta: vec![Metadata { @@ -1663,8 +1678,19 @@ impl From for KclValue { } } -impl From<&Box> for KclValue { - fn from(literal: &Box) -> Self { +impl From<&Node> for KclValue { + fn from(literal: &Node) -> Self { + KclValue::UserVal(UserVal { + value: JValue::from(literal.value.clone()), + meta: vec![Metadata { + source_range: literal.into(), + }], + }) + } +} + +impl From<&BoxNode> for KclValue { + fn from(literal: &BoxNode) -> Self { KclValue::UserVal(UserVal { value: JValue::from(literal.value.clone()), meta: vec![Metadata { @@ -1679,8 +1705,6 @@ impl From<&Box> for KclValue { #[ts(export)] #[serde(tag = "type")] pub struct Identifier { - pub start: usize, - pub end: usize, pub name: String, #[serde(default, skip_serializing_if = "Option::is_none")] @@ -1688,18 +1712,7 @@ pub struct Identifier { pub digest: Option, } -impl_value_meta!(Identifier); - -impl Identifier { - pub fn new(name: &str) -> Self { - Self { - start: 0, - end: 0, - name: name.to_string(), - digest: None, - } - } - +impl Node { /// Get the constraint level for this identifier. /// Identifier are always fully constrained. pub fn get_constraint_level(&self) -> ConstraintLevel { @@ -1707,6 +1720,15 @@ impl Identifier { source_ranges: vec![self.into()], } } +} + +impl Identifier { + pub fn new(name: &str) -> Node { + Node::no_src(Self { + name: name.to_string(), + digest: None, + }) + } /// Rename all identifiers that have the old name to the new given name. fn rename(&mut self, old_name: &str, new_name: &str) { @@ -1721,8 +1743,6 @@ impl Identifier { #[ts(export)] #[serde(tag = "type")] pub struct TagDeclarator { - pub start: usize, - pub end: usize, #[serde(rename = "value")] pub name: String, @@ -1731,34 +1751,22 @@ pub struct TagDeclarator { pub digest: Option, } -impl_value_meta!(TagDeclarator); +pub type TagNode = Node; -impl From> for SourceRange { - fn from(tag: Box) -> Self { - Self([tag.start, tag.end]) - } -} - -impl From> for Vec { - fn from(tag: Box) -> Self { - vec![tag.into()] - } -} - -impl From<&Box> for KclValue { - fn from(tag: &Box) -> Self { +impl From<&BoxNode> for KclValue { + fn from(tag: &BoxNode) -> Self { KclValue::TagDeclarator(tag.clone()) } } -impl From<&TagDeclarator> for KclValue { - fn from(tag: &TagDeclarator) -> Self { +impl From<&Node> for KclValue { + fn from(tag: &Node) -> Self { KclValue::TagDeclarator(Box::new(tag.clone())) } } -impl From<&TagDeclarator> for TagIdentifier { - fn from(tag: &TagDeclarator) -> Self { +impl From<&Node> for TagIdentifier { + fn from(tag: &Node) -> Self { TagIdentifier { value: tag.name.clone(), info: None, @@ -1769,8 +1777,8 @@ impl From<&TagDeclarator> for TagIdentifier { } } -impl From<&TagDeclarator> for CompletionItem { - fn from(tag: &TagDeclarator) -> Self { +impl From<&Node> for CompletionItem { + fn from(tag: &Node) -> Self { CompletionItem { label: tag.name.to_string(), label_details: None, @@ -1794,16 +1802,7 @@ impl From<&TagDeclarator> for CompletionItem { } } -impl TagDeclarator { - pub fn new(name: &str) -> Self { - Self { - start: 0, - end: 0, - name: name.to_string(), - digest: None, - } - } - +impl Node { /// Get the constraint level for this identifier. /// TagDeclarator are always fully constrained. pub fn get_constraint_level(&self) -> ConstraintLevel { @@ -1812,13 +1811,6 @@ impl TagDeclarator { } } - /// Rename all identifiers that have the old name to the new given name. - fn rename(&mut self, old_name: &str, new_name: &str) { - if self.name == old_name { - self.name = new_name.to_string(); - } - } - pub fn get_lsp_symbols(&self, code: &str) -> Vec { let source_range: SourceRange = self.into(); @@ -1838,39 +1830,40 @@ impl TagDeclarator { } } -#[derive(Debug, Clone, Deserialize, Serialize, PartialEq, ts_rs::TS, JsonSchema, Bake)] +impl TagDeclarator { + pub fn new(name: &str) -> Node { + Node::no_src(Self { + name: name.to_string(), + digest: None, + }) + } + + /// Rename all identifiers that have the old name to the new given name. + fn rename(&mut self, old_name: &str, new_name: &str) { + if self.name == old_name { + self.name = new_name.to_string(); + } + } +} + +#[derive(Debug, Default, Clone, Deserialize, Serialize, PartialEq, ts_rs::TS, JsonSchema, Bake)] #[databake(path = kcl_lib::ast::types)] #[ts(export)] #[serde(tag = "type")] pub struct PipeSubstitution { - pub start: usize, - pub end: usize, - #[serde(default, skip_serializing_if = "Option::is_none")] #[ts(optional)] pub digest: Option, } -impl_value_meta!(PipeSubstitution); - impl PipeSubstitution { - pub fn new() -> Self { - Self { - start: 0, - end: 0, - digest: None, - } + pub fn new() -> Node { + Node::no_src(Self { digest: None }) } } -impl Default for PipeSubstitution { - fn default() -> Self { - Self::new() - } -} - -impl From for Expr { - fn from(pipe_substitution: PipeSubstitution) -> Self { +impl From> for Expr { + fn from(pipe_substitution: Node) -> Self { Expr::PipeSubstitution(Box::new(pipe_substitution)) } } @@ -1880,8 +1873,6 @@ impl From for Expr { #[ts(export)] #[serde(rename_all = "camelCase", tag = "type")] pub struct ArrayExpression { - pub start: usize, - pub end: usize, pub elements: Vec, #[serde(default, skip_serializing_if = "NonCodeMeta::is_empty")] pub non_code_meta: NonCodeMeta, @@ -1891,31 +1882,13 @@ pub struct ArrayExpression { pub digest: Option, } -impl_value_meta!(ArrayExpression); - -impl From for Expr { - fn from(array_expression: ArrayExpression) -> Self { +impl From> for Expr { + fn from(array_expression: Node) -> Self { Expr::ArrayExpression(Box::new(array_expression)) } } -impl ArrayExpression { - pub fn new(elements: Vec) -> Self { - Self { - start: 0, - end: 0, - elements, - non_code_meta: Default::default(), - digest: None, - } - } - - pub fn replace_value(&mut self, source_range: SourceRange, new_value: Expr) { - for element in &mut self.elements { - element.replace_value(source_range, new_value.clone()); - } - } - +impl Node { pub fn get_constraint_level(&self) -> ConstraintLevel { if self.elements.is_empty() { return ConstraintLevel::Ignore { @@ -1930,6 +1903,22 @@ impl ArrayExpression { constraint_levels.get_constraint_level(self.into()) } +} + +impl ArrayExpression { + pub fn new(elements: Vec) -> Node { + Node::no_src(Self { + elements, + non_code_meta: Default::default(), + digest: None, + }) + } + + pub fn replace_value(&mut self, source_range: SourceRange, new_value: Expr) { + for element in &mut self.elements { + element.replace_value(source_range, new_value.clone()); + } + } /// Returns a hover value that includes the given character position. pub fn get_hover_value_for_position(&self, pos: usize, code: &str) -> Option { @@ -1956,10 +1945,8 @@ impl ArrayExpression { #[ts(export)] #[serde(rename_all = "camelCase", tag = "type")] pub struct ArrayRangeExpression { - pub start: usize, - pub end: usize, - pub start_element: Box, - pub end_element: Box, + pub start_element: Expr, + pub end_element: Expr, /// Is the `end_element` included in the range? pub end_inclusive: bool, // TODO (maybe) comments on range components? @@ -1968,31 +1955,13 @@ pub struct ArrayRangeExpression { pub digest: Option, } -impl_value_meta!(ArrayRangeExpression); - -impl From for Expr { - fn from(array_expression: ArrayRangeExpression) -> Self { +impl From> for Expr { + fn from(array_expression: Node) -> Self { Expr::ArrayRangeExpression(Box::new(array_expression)) } } -impl ArrayRangeExpression { - pub fn new(start_element: Box, end_element: Box) -> Self { - Self { - start: 0, - end: 0, - start_element, - end_element, - end_inclusive: true, - digest: None, - } - } - - pub fn replace_value(&mut self, source_range: SourceRange, new_value: Expr) { - self.start_element.replace_value(source_range, new_value.clone()); - self.end_element.replace_value(source_range, new_value.clone()); - } - +impl Node { pub fn get_constraint_level(&self) -> ConstraintLevel { let mut constraint_levels = ConstraintLevels::new(); constraint_levels.push(self.start_element.get_constraint_level()); @@ -2000,10 +1969,26 @@ impl ArrayRangeExpression { constraint_levels.get_constraint_level(self.into()) } +} + +impl ArrayRangeExpression { + pub fn new(start_element: Expr, end_element: Expr) -> Node { + Node::no_src(Self { + start_element, + end_element, + end_inclusive: true, + digest: None, + }) + } + + pub fn replace_value(&mut self, source_range: SourceRange, new_value: Expr) { + self.start_element.replace_value(source_range, new_value.clone()); + self.end_element.replace_value(source_range, new_value.clone()); + } /// Returns a hover value that includes the given character position. pub fn get_hover_value_for_position(&self, pos: usize, code: &str) -> Option { - for element in [&*self.start_element, &*self.end_element] { + for element in [&self.start_element, &self.end_element] { let element_source_range: SourceRange = element.into(); if element_source_range.contains(pos) { return element.get_hover_value_for_position(pos, code); @@ -2025,9 +2010,7 @@ impl ArrayRangeExpression { #[ts(export)] #[serde(rename_all = "camelCase", tag = "type")] pub struct ObjectExpression { - pub start: usize, - pub end: usize, - pub properties: Vec, + pub properties: NodeList, #[serde(default, skip_serializing_if = "NonCodeMeta::is_empty")] pub non_code_meta: NonCodeMeta, @@ -2036,23 +2019,7 @@ pub struct ObjectExpression { pub digest: Option, } -impl ObjectExpression { - pub fn new(properties: Vec) -> Self { - Self { - start: 0, - end: 0, - properties, - non_code_meta: Default::default(), - digest: None, - } - } - - pub fn replace_value(&mut self, source_range: SourceRange, new_value: Expr) { - for property in &mut self.properties { - property.value.replace_value(source_range, new_value.clone()); - } - } - +impl Node { pub fn get_constraint_level(&self) -> ConstraintLevel { if self.properties.is_empty() { return ConstraintLevel::Ignore { @@ -2067,6 +2034,22 @@ impl ObjectExpression { constraint_levels.get_constraint_level(self.into()) } +} + +impl ObjectExpression { + pub fn new(properties: NodeList) -> Node { + Node::no_src(Self { + properties, + non_code_meta: Default::default(), + digest: None, + }) + } + + pub fn replace_value(&mut self, source_range: SourceRange, new_value: Expr) { + for property in &mut self.properties { + property.value.replace_value(source_range, new_value.clone()); + } + } /// Returns a hover value that includes the given character position. pub fn get_hover_value_for_position(&self, pos: usize, code: &str) -> Option { @@ -2088,16 +2071,12 @@ impl ObjectExpression { } } -impl_value_meta!(ObjectExpression); - #[derive(Debug, Clone, Deserialize, Serialize, PartialEq, ts_rs::TS, JsonSchema, Bake)] #[databake(path = kcl_lib::ast::types)] #[ts(export)] #[serde(tag = "type")] pub struct ObjectProperty { - pub start: usize, - pub end: usize, - pub key: Identifier, + pub key: Node, pub value: Expr, #[serde(default, skip_serializing_if = "Option::is_none")] @@ -2105,9 +2084,7 @@ pub struct ObjectProperty { pub digest: Option, } -impl_value_meta!(ObjectProperty); - -impl ObjectProperty { +impl Node { pub fn get_lsp_symbols(&self, code: &str) -> Vec { let source_range: SourceRange = self.clone().into(); let inner_source_range: SourceRange = self.key.clone().into(); @@ -2125,7 +2102,9 @@ impl ObjectProperty { }, ] } +} +impl ObjectProperty { /// Returns a hover value that includes the given character position. pub fn get_hover_value_for_position(&self, pos: usize, code: &str) -> Option { let value_source_range: SourceRange = self.value.clone().into(); @@ -2142,8 +2121,8 @@ impl ObjectProperty { #[ts(export)] #[serde(tag = "type")] pub enum MemberObject { - MemberExpression(Box), - Identifier(Box), + MemberExpression(BoxNode), + Identifier(BoxNode), } impl MemberObject { @@ -2189,8 +2168,8 @@ impl From<&MemberObject> for SourceRange { #[ts(export)] #[serde(tag = "type")] pub enum LiteralIdentifier { - Identifier(Box), - Literal(Box), + Identifier(BoxNode), + Literal(BoxNode), } impl LiteralIdentifier { @@ -2226,8 +2205,6 @@ impl From<&LiteralIdentifier> for SourceRange { #[ts(export)] #[serde(tag = "type")] pub struct MemberExpression { - pub start: usize, - pub end: usize, pub object: MemberObject, pub property: LiteralIdentifier, pub computed: bool, @@ -2237,9 +2214,7 @@ pub struct MemberExpression { pub digest: Option, } -impl_value_meta!(MemberExpression); - -impl MemberExpression { +impl Node { /// Get the constraint level for a member expression. /// This is always fully constrained. pub fn get_constraint_level(&self) -> ConstraintLevel { @@ -2247,7 +2222,9 @@ impl MemberExpression { source_ranges: vec![self.into()], } } +} +impl MemberExpression { /// Returns a hover value that includes the given character position. pub fn get_hover_value_for_position(&self, pos: usize, code: &str) -> Option { let object_source_range: SourceRange = self.object.clone().into(); @@ -2287,8 +2264,6 @@ pub struct ObjectKeyInfo { #[ts(export)] #[serde(tag = "type")] pub struct BinaryExpression { - pub start: usize, - pub end: usize, pub operator: BinaryOperator, pub left: BinaryPart, pub right: BinaryPart, @@ -2298,25 +2273,7 @@ pub struct BinaryExpression { pub digest: Option, } -impl_value_meta!(BinaryExpression); - -impl BinaryExpression { - pub fn new(operator: BinaryOperator, left: BinaryPart, right: BinaryPart) -> Self { - Self { - start: left.start(), - end: right.end(), - operator, - left, - right, - digest: None, - } - } - - pub fn replace_value(&mut self, source_range: SourceRange, new_value: Expr) { - self.left.replace_value(source_range, new_value.clone()); - self.right.replace_value(source_range, new_value); - } - +impl Node { pub fn get_constraint_level(&self) -> ConstraintLevel { let left_constraint_level = self.left.get_constraint_level(); let right_constraint_level = self.right.get_constraint_level(); @@ -2326,6 +2283,22 @@ impl BinaryExpression { constraint_levels.push(right_constraint_level); constraint_levels.get_constraint_level(self.into()) } +} + +impl BinaryExpression { + pub fn new(operator: BinaryOperator, left: BinaryPart, right: BinaryPart) -> Node { + Node::no_src(Self { + operator, + left, + right, + digest: None, + }) + } + + pub fn replace_value(&mut self, source_range: SourceRange, new_value: Expr) { + self.left.replace_value(source_range, new_value.clone()); + self.right.replace_value(source_range, new_value); + } pub fn precedence(&self) -> u8 { self.operator.precedence() @@ -2472,8 +2445,6 @@ impl BinaryOperator { #[ts(export)] #[serde(tag = "type")] pub struct UnaryExpression { - pub start: usize, - pub end: usize, pub operator: UnaryOperator, pub argument: BinaryPart, @@ -2482,17 +2453,13 @@ pub struct UnaryExpression { pub digest: Option, } -impl_value_meta!(UnaryExpression); - impl UnaryExpression { - pub fn new(operator: UnaryOperator, argument: BinaryPart) -> Self { - Self { - start: 0, - end: argument.end(), + pub fn new(operator: UnaryOperator, argument: BinaryPart) -> Node { + Node::no_src(Self { operator, argument, digest: None, - } + }) } pub fn replace_value(&mut self, source_range: SourceRange, new_value: Expr) { @@ -2549,8 +2516,6 @@ impl UnaryOperator { #[ts(export)] #[serde(rename_all = "camelCase", tag = "type")] pub struct PipeExpression { - pub start: usize, - pub end: usize, // TODO: Only the first body expression can be any Value. // The rest will be CallExpression, and the AST type should reflect this. pub body: Vec, @@ -2562,31 +2527,13 @@ pub struct PipeExpression { pub digest: Option, } -impl_value_meta!(PipeExpression); - -impl From for Expr { - fn from(pipe_expression: PipeExpression) -> Self { +impl From> for Expr { + fn from(pipe_expression: Node) -> Self { Expr::PipeExpression(Box::new(pipe_expression)) } } -impl PipeExpression { - pub fn new(body: Vec) -> Self { - Self { - start: 0, - end: 0, - body, - non_code_meta: Default::default(), - digest: None, - } - } - - pub fn replace_value(&mut self, source_range: SourceRange, new_value: Expr) { - for value in &mut self.body { - value.replace_value(source_range, new_value.clone()); - } - } - +impl Node { pub fn get_constraint_level(&self) -> ConstraintLevel { if self.body.is_empty() { return ConstraintLevel::Ignore { @@ -2603,6 +2550,27 @@ impl PipeExpression { constraint_levels.get_constraint_level(self.into()) } + #[async_recursion] + pub async fn get_result(&self, exec_state: &mut ExecState, ctx: &ExecutorContext) -> Result { + execute_pipe_body(exec_state, &self.body, self.into(), ctx).await + } +} + +impl PipeExpression { + pub fn new(body: Vec) -> Node { + Node::no_src(Self { + body, + non_code_meta: Default::default(), + digest: None, + }) + } + + pub fn replace_value(&mut self, source_range: SourceRange, new_value: Expr) { + for value in &mut self.body { + value.replace_value(source_range, new_value.clone()); + } + } + /// Returns a hover value that includes the given character position. pub fn get_hover_value_for_position(&self, pos: usize, code: &str) -> Option { for b in &self.body { @@ -2615,11 +2583,6 @@ impl PipeExpression { None } - #[async_recursion] - pub async fn get_result(&self, exec_state: &mut ExecState, ctx: &ExecutorContext) -> Result { - execute_pipe_body(exec_state, &self.body, self.into(), ctx).await - } - /// Rename all identifiers that have the old name to the new given name. fn rename_identifiers(&mut self, old_name: &str, new_name: &str) { for statement in &mut self.body { @@ -2686,7 +2649,7 @@ pub enum FnArgType { #[serde(tag = "type")] pub struct Parameter { /// The parameter's label or name. - pub identifier: Identifier, + pub identifier: Node, /// The type of the parameter. /// This is optional if the user defines a type. #[serde(skip)] @@ -2704,10 +2667,8 @@ pub struct Parameter { #[ts(export)] #[serde(tag = "type")] pub struct FunctionExpression { - pub start: usize, - pub end: usize, pub params: Vec, - pub body: Program, + pub body: Node, #[serde(skip)] pub return_type: Option, @@ -2716,8 +2677,6 @@ pub struct FunctionExpression { pub digest: Option, } -impl_value_meta!(FunctionExpression); - #[derive(Debug, PartialEq, Clone)] pub struct RequiredParamAfterOptionalParam(pub Box); @@ -2727,20 +2686,20 @@ impl std::fmt::Display for RequiredParamAfterOptionalParam { } } -impl FunctionExpression { +impl Node { /// Function expressions don't really apply. pub fn get_constraint_level(&self) -> ConstraintLevel { ConstraintLevel::Ignore { source_ranges: vec![self.into()], } } +} +impl FunctionExpression { pub fn required_and_optional_params( &self, ) -> Result<(&[Parameter], &[Parameter]), RequiredParamAfterOptionalParam> { let Self { - start: _, - end: _, params, body: _, digest: _, @@ -2795,8 +2754,6 @@ impl FunctionExpression { #[ts(export)] #[serde(tag = "type")] pub struct ReturnStatement { - pub start: usize, - pub end: usize, pub argument: Expr, #[serde(default, skip_serializing_if = "Option::is_none")] @@ -2804,8 +2761,6 @@ pub struct ReturnStatement { pub digest: Option, } -impl_value_meta!(ReturnStatement); - /// Describes information about a hover. #[derive(Debug, Clone, Deserialize, Serialize, PartialEq)] #[serde(rename_all = "camelCase")] @@ -3244,34 +3199,40 @@ const cylinder = startSketchOn('-XZ') Some(FnArgType::Object { properties: vec![ Parameter { - identifier: Identifier { - start: 35, - end: 40, - name: "thing".to_owned(), - digest: None, - }, + identifier: Node::new( + Identifier { + name: "thing".to_owned(), + digest: None, + }, + 35, + 40, + ), type_: Some(FnArgType::Primitive(FnArgPrimitive::Number)), optional: false, digest: None }, Parameter { - identifier: Identifier { - start: 50, - end: 56, - name: "things".to_owned(), - digest: None, - }, + identifier: Node::new( + Identifier { + name: "things".to_owned(), + digest: None, + }, + 50, + 56, + ), type_: Some(FnArgType::Array(FnArgPrimitive::String)), optional: false, digest: None }, Parameter { - identifier: Identifier { - start: 68, - end: 72, - name: "more".to_owned(), - digest: None - }, + identifier: Node::new( + Identifier { + name: "more".to_owned(), + digest: None + }, + 68, + 72, + ), type_: Some(FnArgType::Primitive(FnArgPrimitive::String)), optional: true, digest: None @@ -3306,34 +3267,40 @@ const cylinder = startSketchOn('-XZ') Some(FnArgType::Object { properties: vec![ Parameter { - identifier: Identifier { - start: 18, - end: 23, - name: "thing".to_owned(), - digest: None - }, + identifier: Node::new( + Identifier { + name: "thing".to_owned(), + digest: None + }, + 18, + 23, + ), type_: Some(FnArgType::Primitive(FnArgPrimitive::Number)), optional: false, digest: None }, Parameter { - identifier: Identifier { - start: 33, - end: 39, - name: "things".to_owned(), - digest: None - }, + identifier: Node::new( + Identifier { + name: "things".to_owned(), + digest: None + }, + 33, + 39, + ), type_: Some(FnArgType::Array(FnArgPrimitive::String)), optional: false, digest: None }, Parameter { - identifier: Identifier { - start: 51, - end: 55, - name: "more".to_owned(), - digest: None - }, + identifier: Node::new( + Identifier { + name: "more".to_owned(), + digest: None + }, + 51, + 55, + ), type_: Some(FnArgType::Primitive(FnArgPrimitive::String)), optional: true, digest: None @@ -3349,117 +3316,105 @@ const cylinder = startSketchOn('-XZ') ( "no params", (0..=0), - FunctionExpression { - start: 0, - end: 0, + Node::no_src(FunctionExpression { params: vec![], - body: Program { - start: 0, - end: 0, + body: Node::no_src(Program { body: Vec::new(), non_code_meta: Default::default(), digest: None, - }, + }), return_type: None, digest: None, - }, + }), ), ( "all required params", (1..=1), - FunctionExpression { - start: 0, - end: 0, + Node::no_src(FunctionExpression { params: vec![Parameter { - identifier: Identifier { - start: 0, - end: 0, + identifier: Node::no_src(Identifier { name: "foo".to_owned(), digest: None, - }, + }), type_: None, optional: false, digest: None, }], - body: Program { + body: Node { + inner: Program { + body: Vec::new(), + non_code_meta: Default::default(), + digest: None, + }, start: 0, end: 0, - body: Vec::new(), - non_code_meta: Default::default(), - digest: None, }, return_type: None, digest: None, - }, + }), ), ( "all optional params", (0..=1), - FunctionExpression { - start: 0, - end: 0, + Node::no_src(FunctionExpression { params: vec![Parameter { - identifier: Identifier { - start: 0, - end: 0, + identifier: Node::no_src(Identifier { name: "foo".to_owned(), digest: None, - }, + }), type_: None, optional: true, digest: None, }], - body: Program { + body: Node { + inner: Program { + body: Vec::new(), + non_code_meta: Default::default(), + digest: None, + }, start: 0, end: 0, - body: Vec::new(), - non_code_meta: Default::default(), - digest: None, }, return_type: None, digest: None, - }, + }), ), ( "mixed params", (1..=2), - FunctionExpression { - start: 0, - end: 0, + Node::no_src(FunctionExpression { params: vec![ Parameter { - identifier: Identifier { - start: 0, - end: 0, + identifier: Node::no_src(Identifier { name: "foo".to_owned(), digest: None, - }, + }), type_: None, optional: false, digest: None, }, Parameter { - identifier: Identifier { - start: 0, - end: 0, + identifier: Node::no_src(Identifier { name: "bar".to_owned(), digest: None, - }, + }), type_: None, optional: true, digest: None, }, ], - body: Program { + body: Node { + inner: Program { + body: Vec::new(), + non_code_meta: Default::default(), + digest: None, + }, start: 0, end: 0, - body: Vec::new(), - non_code_meta: Default::default(), - digest: None, }, return_type: None, digest: None, - }, + }), ), ] .into_iter() @@ -3479,11 +3434,14 @@ const cylinder = startSketchOn('-XZ') // We want to get the bool and verify it is a bool. - let BodyItem::ExpressionStatement(ExpressionStatement { - expression, - start: _, - end: _, - digest: None, + let BodyItem::ExpressionStatement(Node { + inner: + ExpressionStatement { + expression, + digest: None, + .. + }, + .. }) = program.body.first().unwrap() else { panic!("expected a function!"); diff --git a/src/wasm-lib/kcl/src/ast/types/condition.rs b/src/wasm-lib/kcl/src/ast/types/condition.rs index 341d217a4..9244a4130 100644 --- a/src/wasm-lib/kcl/src/ast/types/condition.rs +++ b/src/wasm-lib/kcl/src/ast/types/condition.rs @@ -1,9 +1,10 @@ -use crate::executor::Metadata; use crate::executor::SourceRange; -use super::impl_value_meta; +use super::BoxNode; use super::ConstraintLevel; use super::Hover; +use super::Node; +use super::NodeList; use super::{Digest, Expr}; use databake::*; use schemars::JsonSchema; @@ -19,12 +20,10 @@ type IfBlock = crate::ast::types::Program; #[ts(export)] #[serde(tag = "type")] pub struct IfExpression { - pub start: usize, - pub end: usize, pub cond: Box, - pub then_val: Box, - pub else_ifs: Vec, - pub final_else: Box, + pub then_val: BoxNode, + pub else_ifs: NodeList, + pub final_else: BoxNode, pub digest: Option, } @@ -34,57 +33,21 @@ pub struct IfExpression { #[ts(export)] #[serde(tag = "type")] pub struct ElseIf { - pub start: usize, - pub end: usize, pub cond: Expr, - pub then_val: Box, + pub then_val: BoxNode, pub digest: Option, } // Source code metadata -impl_value_meta!(IfExpression); -impl_value_meta!(ElseIf); - -impl IfExpression { +impl Node { fn source_ranges(&self) -> Vec { vec![SourceRange::from(self)] } } -impl From for Metadata { - fn from(value: IfExpression) -> Self { - Self { - source_range: value.into(), - } - } -} - -impl From for Metadata { - fn from(value: ElseIf) -> Self { - Self { - source_range: value.into(), - } - } -} -impl From<&IfExpression> for Metadata { - fn from(value: &IfExpression) -> Self { - Self { - source_range: value.into(), - } - } -} - -impl From<&ElseIf> for Metadata { - fn from(value: &ElseIf) -> Self { - Self { - source_range: value.into(), - } - } -} - -impl ElseIf { +impl Node { #[allow(dead_code)] fn source_ranges(&self) -> Vec { vec![SourceRange([self.start, self.end])] @@ -93,6 +56,15 @@ impl ElseIf { // IDE support and refactors +impl Node { + /// Get the constraint level. + pub fn get_constraint_level(&self) -> ConstraintLevel { + ConstraintLevel::Full { + source_ranges: self.source_ranges(), + } + } +} + impl IfExpression { pub fn get_hover_value_for_position(&self, pos: usize, code: &str) -> Option { self.cond @@ -115,12 +87,7 @@ impl IfExpression { } self.final_else.rename_identifiers(old_name, new_name); } - /// Get the constraint level. - pub fn get_constraint_level(&self) -> ConstraintLevel { - ConstraintLevel::Full { - source_ranges: self.source_ranges(), - } - } + pub fn replace_value(&mut self, source_range: SourceRange, new_value: Expr) { self.cond.replace_value(source_range, new_value.clone()); for else_if in &mut self.else_ifs { diff --git a/src/wasm-lib/kcl/src/ast/types/execute.rs b/src/wasm-lib/kcl/src/ast/types/execute.rs index 8d981c96c..d2934305d 100644 --- a/src/wasm-lib/kcl/src/ast/types/execute.rs +++ b/src/wasm-lib/kcl/src/ast/types/execute.rs @@ -1,6 +1,6 @@ use super::{ human_friendly_type, ArrayExpression, ArrayRangeExpression, BinaryExpression, BinaryOperator, BinaryPart, - CallExpression, Expr, IfExpression, LiteralIdentifier, LiteralValue, MemberExpression, MemberObject, + CallExpression, Expr, IfExpression, LiteralIdentifier, LiteralValue, MemberExpression, MemberObject, Node, ObjectExpression, TagDeclarator, UnaryExpression, UnaryOperator, }; use crate::{ @@ -32,7 +32,7 @@ impl BinaryPart { } } -impl MemberExpression { +impl Node { pub fn get_result_array(&self, exec_state: &mut ExecState, index: usize) -> Result { let array = match &self.object { MemberObject::MemberExpression(member_expr) => member_expr.get_result(exec_state)?, @@ -137,7 +137,7 @@ impl MemberExpression { } } -impl BinaryExpression { +impl Node { #[async_recursion] pub async fn get_result(&self, exec_state: &mut ExecState, ctx: &ExecutorContext) -> Result { let left_json_value = self.left.get_result(exec_state, ctx).await?.get_json_value()?; @@ -186,7 +186,7 @@ impl BinaryExpression { } } -impl UnaryExpression { +impl Node { pub async fn get_result(&self, exec_state: &mut ExecState, ctx: &ExecutorContext) -> Result { if self.operator == UnaryOperator::Not { let value = self.argument.get_result(exec_state, ctx).await?.get_json_value()?; @@ -297,7 +297,7 @@ async fn inner_execute_pipe_body( Ok(final_output) } -impl CallExpression { +impl Node { #[async_recursion] pub async fn execute(&self, exec_state: &mut ExecState, ctx: &ExecutorContext) -> Result { let fn_name = &self.callee.name; @@ -502,7 +502,7 @@ impl CallExpression { } } -impl TagDeclarator { +impl Node { pub async fn execute(&self, exec_state: &mut ExecState) -> Result { let memory_item = KclValue::TagIdentifier(Box::new(TagIdentifier { value: self.name.clone(), @@ -518,7 +518,7 @@ impl TagDeclarator { } } -impl ArrayExpression { +impl Node { #[async_recursion] pub async fn execute(&self, exec_state: &mut ExecState, ctx: &ExecutorContext) -> Result { let mut results = Vec::with_capacity(self.elements.len()); @@ -543,21 +543,21 @@ impl ArrayExpression { } } -impl ArrayRangeExpression { +impl Node { #[async_recursion] pub async fn execute(&self, exec_state: &mut ExecState, ctx: &ExecutorContext) -> Result { - let metadata = Metadata::from(&*self.start_element); + let metadata = Metadata::from(&self.start_element); let start = ctx .execute_expr(&self.start_element, exec_state, &metadata, StatementKind::Expression) .await? .get_json_value()?; - let start = parse_json_number_as_i64(&start, (&*self.start_element).into())?; - let metadata = Metadata::from(&*self.end_element); + let start = parse_json_number_as_i64(&start, (&self.start_element).into())?; + let metadata = Metadata::from(&self.end_element); let end = ctx .execute_expr(&self.end_element, exec_state, &metadata, StatementKind::Expression) .await? .get_json_value()?; - let end = parse_json_number_as_i64(&end, (&*self.end_element).into())?; + let end = parse_json_number_as_i64(&end, (&self.end_element).into())?; if end < start { return Err(KclError::Semantic(KclErrorDetails { @@ -581,7 +581,7 @@ impl ArrayRangeExpression { } } -impl ObjectExpression { +impl Node { #[async_recursion] pub async fn execute(&self, exec_state: &mut ExecState, ctx: &ExecutorContext) -> Result { let mut object = serde_json::Map::new(); @@ -655,7 +655,7 @@ pub fn json_as_bool(j: &serde_json::Value) -> Option { } } -impl IfExpression { +impl Node { #[async_recursion] pub async fn get_result(&self, exec_state: &mut ExecState, ctx: &ExecutorContext) -> Result { // Check the `if` branch. @@ -717,13 +717,13 @@ impl Property { let property_src: SourceRange = value.clone().into(); match value { LiteralIdentifier::Identifier(identifier) => { - let name = identifier.name; + let name = &identifier.name; if !computed { // Treat the property as a literal Ok(Property::String(name.to_string())) } else { // Actually evaluate memory to compute the property. - let prop = exec_state.memory.get(&name, property_src)?; + let prop = exec_state.memory.get(name, property_src)?; let KclValue::UserVal(prop) = prop else { return Err(KclError::Semantic(KclErrorDetails { source_ranges: property_sr, @@ -732,7 +732,7 @@ impl Property { ), })); }; - jvalue_to_prop(&prop.value, property_sr, &name) + jvalue_to_prop(&prop.value, property_sr, name) } } LiteralIdentifier::Literal(literal) => { diff --git a/src/wasm-lib/kcl/src/ast/types/literal_value.rs b/src/wasm-lib/kcl/src/ast/types/literal_value.rs index dc6fb1296..f723154fa 100644 --- a/src/wasm-lib/kcl/src/ast/types/literal_value.rs +++ b/src/wasm-lib/kcl/src/ast/types/literal_value.rs @@ -5,6 +5,8 @@ use serde_json::Value as JValue; use crate::ast::types::{Expr, Literal}; +use super::Node; + #[derive(Debug, Clone, Deserialize, Serialize, PartialEq, ts_rs::TS, JsonSchema, Bake)] #[databake(path = kcl_lib::ast::types)] #[ts(export)] @@ -33,8 +35,8 @@ impl LiteralValue { } } -impl From for Expr { - fn from(literal: Literal) -> Self { +impl From> for Expr { + fn from(literal: Node) -> Self { Expr::Literal(Box::new(literal)) } } diff --git a/src/wasm-lib/kcl/src/docs/gen_std_tests.rs b/src/wasm-lib/kcl/src/docs/gen_std_tests.rs index 34c015076..4b6eba5fd 100644 --- a/src/wasm-lib/kcl/src/docs/gen_std_tests.rs +++ b/src/wasm-lib/kcl/src/docs/gen_std_tests.rs @@ -396,6 +396,9 @@ fn generate_function(internal_fn: Box) -> Result String { let mut cleaned_output = output.to_string(); // Fix the links to the types. + // Gross hack for the stupid alias types. + cleaned_output = cleaned_output.replace("TagNode", "TagDeclarator"); + let link = format!("[`{}`](/docs/kcl/types#tag-declaration)", "TagDeclarator"); cleaned_output = cleaned_output.replace("`TagDeclarator`", &link); let link = format!("[`{}`](/docs/kcl/types#tag-identifier)", "TagIdentifier"); @@ -409,7 +412,7 @@ fn cleanup_type_links(output: &str, types: Vec) -> String { let mut cleaned_output = output.to_string(); // Fix the links to the types. for type_name in types { - if type_name == "TagDeclarator" || type_name == "TagIdentifier" { + if type_name == "TagDeclarator" || type_name == "TagIdentifier" || type_name == "TagNode" { continue; } else { let link = format!("(/docs/kcl/types/{})", type_name); @@ -486,7 +489,7 @@ fn generate_type( } // Skip over TagDeclarator and TagIdentifier since they have custom docs. - if name == "TagDeclarator" || name == "TagIdentifier" { + if name == "TagDeclarator" || name == "TagIdentifier" || name == "TagNode" { return Ok(()); } diff --git a/src/wasm-lib/kcl/src/docs/mod.rs b/src/wasm-lib/kcl/src/docs/mod.rs index eb2bc3d6e..a7dc91db9 100644 --- a/src/wasm-lib/kcl/src/docs/mod.rs +++ b/src/wasm-lib/kcl/src/docs/mod.rs @@ -76,7 +76,7 @@ impl StdLibFnArg { || self.type_ == "SketchOrSurface" { return Ok(Some((index, format!("${{{}:{}}}", index, "%")))); - } else if self.type_ == "TagDeclarator" && self.required { + } else if (self.type_ == "TagDeclarator" || self.type_ == "TagNode") && self.required { return Ok(Some((index, format!("${{{}:{}}}", index, "$myTag")))); } else if self.type_ == "TagIdentifier" && self.required { // TODO: actually use the ast to populate this. diff --git a/src/wasm-lib/kcl/src/executor.rs b/src/wasm-lib/kcl/src/executor.rs index 36f8563f4..3e817d445 100644 --- a/src/wasm-lib/kcl/src/executor.rs +++ b/src/wasm-lib/kcl/src/executor.rs @@ -26,8 +26,8 @@ type Point3D = kcmc::shared::Point3d; use crate::{ ast::types::{ - human_friendly_type, BodyItem, Expr, ExpressionStatement, FunctionExpression, ImportStatement, ItemVisibility, - KclNone, Program, ReturnStatement, TagDeclarator, + human_friendly_type, BodyItem, Expr, FunctionExpression, ItemVisibility, KclNone, Node, NodeRef, Program, + TagDeclarator, TagNode, }, engine::{EngineManager, ExecutionKind}, errors::{KclError, KclErrorDetails}, @@ -155,6 +155,7 @@ impl Default for ProgramMemory { /// An index pointing to an environment. #[derive(Debug, Clone, Copy, Deserialize, Serialize, PartialEq, ts_rs::TS, JsonSchema)] +#[schemars(transparent)] pub struct EnvironmentRef(usize); impl EnvironmentRef { @@ -339,7 +340,7 @@ impl IdGenerator { pub enum KclValue { UserVal(UserVal), TagIdentifier(Box), - TagDeclarator(Box), + TagDeclarator(crate::ast::types::BoxNode), Plane(Box), Face(Box), @@ -352,7 +353,7 @@ pub enum KclValue { Function { #[serde(skip)] func: Option, - expression: Box, + expression: crate::ast::types::BoxNode, memory: Box, #[serde(rename = "__meta")] meta: Vec, @@ -890,7 +891,7 @@ pub type MemoryFunction = fn( s: Vec, memory: ProgramMemory, - expression: Box, + expression: crate::ast::types::BoxNode, metadata: Vec, exec_state: &ExecState, ctx: ExecutorContext, @@ -900,7 +901,7 @@ impl From for Vec { fn from(item: KclValue) -> Self { match item { KclValue::UserVal(u) => u.meta.iter().map(|m| m.source_range).collect(), - KclValue::TagDeclarator(t) => t.into(), + KclValue::TagDeclarator(t) => vec![(&t).into()], KclValue::TagIdentifier(t) => t.meta.iter().map(|m| m.source_range).collect(), KclValue::Solid(e) => e.meta.iter().map(|m| m.source_range).collect(), KclValue::Solids { value } => value @@ -1043,9 +1044,9 @@ impl KclValue { } /// Get a tag declarator from a memory item. - pub fn get_tag_declarator(&self) -> Result { + pub fn get_tag_declarator(&self) -> Result { match self { - KclValue::TagDeclarator(t) => Ok(*t.clone()), + KclValue::TagDeclarator(t) => Ok((**t).clone()), _ => Err(KclError::Semantic(KclErrorDetails { message: format!("Not a tag declarator: {:?}", self), source_ranges: self.clone().into(), @@ -1054,9 +1055,9 @@ impl KclValue { } /// Get an optional tag from a memory item. - pub fn get_tag_declarator_opt(&self) -> Result, KclError> { + pub fn get_tag_declarator_opt(&self) -> Result, KclError> { match self { - KclValue::TagDeclarator(t) => Ok(Some(*t.clone())), + KclValue::TagDeclarator(t) => Ok(Some((**t).clone())), _ => Err(KclError::Semantic(KclErrorDetails { message: format!("Not a tag declarator: {:?}", self), source_ranges: self.clone().into(), @@ -1200,7 +1201,7 @@ pub struct GetTangentialInfoFromPathsResult { } impl Sketch { - pub(crate) fn add_tag(&mut self, tag: &TagDeclarator, current_path: &Path) { + pub(crate) fn add_tag(&mut self, tag: NodeRef<'_, TagDeclarator>, current_path: &Path) { let mut tag_identifier: TagIdentifier = tag.into(); let base = current_path.get_base(); tag_identifier.info = Some(TagEngineInfo { @@ -1326,7 +1327,7 @@ pub enum EdgeCut { /// The engine id of the edge to fillet. #[serde(rename = "edgeId")] edge_id: uuid::Uuid, - tag: Box>, + tag: Box>, }, /// A chamfer. Chamfer { @@ -1336,7 +1337,7 @@ pub enum EdgeCut { /// The engine id of the edge to chamfer. #[serde(rename = "edgeId")] edge_id: uuid::Uuid, - tag: Box>, + tag: Box>, }, } @@ -1355,7 +1356,7 @@ impl EdgeCut { } } - pub fn tag(&self) -> Option { + pub fn tag(&self) -> Option { match self { EdgeCut::Fillet { tag, .. } => *tag.clone(), EdgeCut::Chamfer { tag, .. } => *tag.clone(), @@ -1529,26 +1530,10 @@ impl From for Metadata { } } -impl From<&ImportStatement> for Metadata { - fn from(stmt: &ImportStatement) -> Self { +impl From> for Metadata { + fn from(node: NodeRef<'_, T>) -> Self { Self { - source_range: SourceRange::new(stmt.start, stmt.end), - } - } -} - -impl From<&ExpressionStatement> for Metadata { - fn from(exp_statement: &ExpressionStatement) -> Self { - Self { - source_range: SourceRange::new(exp_statement.start, exp_statement.end), - } - } -} - -impl From<&ReturnStatement> for Metadata { - fn from(return_statement: &ReturnStatement) -> Self { - Self { - source_range: SourceRange::new(return_statement.start, return_statement.end), + source_range: SourceRange::new(node.start, node.end), } } } @@ -1573,7 +1558,7 @@ pub struct BasePath { #[ts(type = "[number, number]")] pub to: [f64; 2], /// The tag of the path. - pub tag: Option, + pub tag: Option, /// Metadata. #[serde(rename = "__geoMeta")] pub geo_meta: GeoMeta, @@ -1709,7 +1694,7 @@ impl Path { } } - pub fn get_tag(&self) -> Option { + pub fn get_tag(&self) -> Option { match self { Path::ToPoint { base } => base.tag.clone(), Path::Horizontal { base, .. } => base.tag.clone(), @@ -1820,7 +1805,7 @@ pub struct ChamferSurface { /// The id for the chamfer surface. pub face_id: uuid::Uuid, /// The tag. - pub tag: Option, + pub tag: Option>, /// Metadata. #[serde(flatten)] pub geo_meta: GeoMeta, @@ -1834,7 +1819,7 @@ pub struct FilletSurface { /// The id for the fillet surface. pub face_id: uuid::Uuid, /// The tag. - pub tag: Option, + pub tag: Option>, /// Metadata. #[serde(flatten)] pub geo_meta: GeoMeta, @@ -1848,7 +1833,7 @@ pub struct ExtrudePlane { /// The face id for the extrude plane. pub face_id: uuid::Uuid, /// The tag. - pub tag: Option, + pub tag: Option>, /// Metadata. #[serde(flatten)] pub geo_meta: GeoMeta, @@ -1862,7 +1847,7 @@ pub struct ExtrudeArc { /// The face id for the extrude plane. pub face_id: uuid::Uuid, /// The tag. - pub tag: Option, + pub tag: Option>, /// Metadata. #[serde(flatten)] pub geo_meta: GeoMeta, @@ -1878,7 +1863,7 @@ impl ExtrudeSurface { } } - pub fn get_tag(&self) -> Option { + pub fn get_tag(&self) -> Option> { match self { ExtrudeSurface::ExtrudePlane(ep) => ep.tag.clone(), ExtrudeSurface::ExtrudeArc(ea) => ea.tag.clone(), @@ -2156,7 +2141,7 @@ impl ExecutorContext { /// Kurt uses this for partial execution. pub async fn run( &self, - program: &crate::ast::types::Program, + program: NodeRef<'_, crate::ast::types::Program>, memory: Option, id_generator: IdGenerator, project_directory: Option, @@ -2170,7 +2155,7 @@ impl ExecutorContext { /// Kurt uses this for partial execution. pub async fn run_with_session_data( &self, - program: &crate::ast::types::Program, + program: NodeRef<'_, crate::ast::types::Program>, memory: Option, id_generator: IdGenerator, project_directory: Option, @@ -2212,9 +2197,9 @@ impl ExecutorContext { /// Execute an AST's program. #[async_recursion] - pub(crate) async fn inner_execute( - &self, - program: &crate::ast::types::Program, + pub(crate) async fn inner_execute<'a>( + &'a self, + program: NodeRef<'a, crate::ast::types::Program>, exec_state: &mut ExecState, body_type: BodyType, ) -> Result, KclError> { @@ -2450,7 +2435,7 @@ impl ExecutorContext { /// Execute the program, then get a PNG screenshot. pub async fn execute_and_prepare_snapshot( &self, - program: &Program, + program: NodeRef<'_, Program>, id_generator: IdGenerator, project_directory: Option, ) -> Result { @@ -2462,7 +2447,7 @@ impl ExecutorContext { /// Execute the program, return the interpreter and outputs. pub async fn execute_and_prepare( &self, - program: &Program, + program: NodeRef<'_, Program>, id_generator: IdGenerator, project_directory: Option, ) -> Result<(ExecState, TakeSnapshot)> { @@ -2507,7 +2492,7 @@ impl ExecutorContext { /// assign it to a parameter of the function, in the given block of function memory. /// Returns Err if too few/too many arguments were given for the function. fn assign_args_to_params( - function_expression: &FunctionExpression, + function_expression: NodeRef<'_, FunctionExpression>, args: Vec, mut fn_memory: ProgramMemory, ) -> Result { @@ -2559,7 +2544,7 @@ fn assign_args_to_params( pub(crate) async fn call_user_defined_function( args: Vec, memory: &ProgramMemory, - function_expression: &FunctionExpression, + function_expression: NodeRef<'_, FunctionExpression>, exec_state: &mut ExecState, ctx: &ExecutorContext, ) -> Result, KclError> { @@ -2598,7 +2583,7 @@ mod tests { use pretty_assertions::assert_eq; use super::*; - use crate::ast::types::{Identifier, Parameter}; + use crate::ast::types::{Identifier, Node, Parameter}; pub async fn parse_execute(code: &str) -> Result { let tokens = crate::token::lexer(code)?; @@ -3570,13 +3555,11 @@ let w = f() + f() meta: Default::default(), }) } - fn ident(s: &'static str) -> Identifier { - Identifier { - start: 0, - end: 0, + fn ident(s: &'static str) -> Node { + Node::no_src(Identifier { name: s.to_owned(), digest: None, - } + }) } fn opt_param(s: &'static str) -> Parameter { Parameter { @@ -3668,20 +3651,20 @@ let w = f() + f() ), ] { // Run each test. - let func_expr = &FunctionExpression { - start: 0, - end: 0, + let func_expr = &Node::no_src(FunctionExpression { params, - body: crate::ast::types::Program { + body: Node { + inner: crate::ast::types::Program { + body: Vec::new(), + non_code_meta: Default::default(), + digest: None, + }, start: 0, end: 0, - body: Vec::new(), - non_code_meta: Default::default(), - digest: None, }, return_type: None, digest: None, - }; + }); let actual = assign_args_to_params(func_expr, args, ProgramMemory::new()); assert_eq!( actual, expected, diff --git a/src/wasm-lib/kcl/src/function_param.rs b/src/wasm-lib/kcl/src/function_param.rs index 63437e23b..190cbd266 100644 --- a/src/wasm-lib/kcl/src/function_param.rs +++ b/src/wasm-lib/kcl/src/function_param.rs @@ -13,7 +13,7 @@ use crate::{ pub struct FunctionParam<'a> { pub inner: Option<&'a MemoryFunction>, pub memory: ProgramMemory, - pub fn_expr: Box, + pub fn_expr: crate::ast::types::BoxNode, pub meta: Vec, pub ctx: ExecutorContext, } diff --git a/src/wasm-lib/kcl/src/lint/checks/std_lib_args.rs b/src/wasm-lib/kcl/src/lint/checks/std_lib_args.rs index 649959fca..6b12626f2 100644 --- a/src/wasm-lib/kcl/src/lint/checks/std_lib_args.rs +++ b/src/wasm-lib/kcl/src/lint/checks/std_lib_args.rs @@ -3,7 +3,7 @@ use std::sync::Arc; use anyhow::Result; use crate::{ - ast::types::CallExpression, + ast::types::{CallExpression, NodeRef}, docs::StdLibFn, executor::SourceRange, lint::rule::{def_finding, Discovered, Finding}, @@ -18,7 +18,10 @@ def_finding!( Previously, we have not been failing when too many arguments are passed to a stdlib function. This is a problem because it can lead to unexpected behavior. We will in the future fail when too many arguments are passed to a function. So fix your code now." ); -fn lint_too_many_args_std_lib_function(f: Box, exp: &CallExpression) -> Result> { +fn lint_too_many_args_std_lib_function( + f: Box, + exp: NodeRef<'_, CallExpression>, +) -> Result> { let mut findings = vec![]; if f.name() == "pow" { diff --git a/src/wasm-lib/kcl/src/lsp/kcl/custom_notifications.rs b/src/wasm-lib/kcl/src/lsp/kcl/custom_notifications.rs index 4d57b561f..a6d35527e 100644 --- a/src/wasm-lib/kcl/src/lsp/kcl/custom_notifications.rs +++ b/src/wasm-lib/kcl/src/lsp/kcl/custom_notifications.rs @@ -3,14 +3,14 @@ use serde::{Deserialize, Serialize}; use tower_lsp::lsp_types::notification::Notification; -use crate::settings::types::UnitLength; +use crate::{ast::types::Node, settings::types::UnitLength}; /// A notification that the AST has changed. #[derive(Debug)] pub enum AstUpdated {} impl Notification for AstUpdated { - type Params = crate::ast::types::Program; + type Params = Node; const METHOD: &'static str = "kcl/astUpdated"; } diff --git a/src/wasm-lib/kcl/src/lsp/kcl/mod.rs b/src/wasm-lib/kcl/src/lsp/kcl/mod.rs index 0d3d8aa41..3d3948e15 100644 --- a/src/wasm-lib/kcl/src/lsp/kcl/mod.rs +++ b/src/wasm-lib/kcl/src/lsp/kcl/mod.rs @@ -40,7 +40,7 @@ use tower_lsp::{ }; use crate::{ - ast::types::{Expr, VariableKind}, + ast::types::{Expr, Node, NodeRef, VariableKind}, executor::{IdGenerator, SourceRange}, lsp::{backend::Backend as _, util::IntoDiagnostic}, parser::PIPE_OPERATOR, @@ -99,7 +99,7 @@ pub struct Backend { /// Token maps. pub token_map: DashMap>, /// AST maps. - pub ast_map: DashMap, + pub ast_map: DashMap>, /// Memory maps. pub memory_map: DashMap, /// Current code. @@ -571,7 +571,7 @@ impl Backend { self.client.publish_diagnostics(params.uri.clone(), items, None).await; } - async fn execute(&self, params: &TextDocumentItem, ast: &crate::ast::types::Program) -> Result<()> { + async fn execute(&self, params: &TextDocumentItem, ast: NodeRef<'_, crate::ast::types::Program>) -> Result<()> { // Check if we can execute. if !self.can_execute().await { return Ok(()); diff --git a/src/wasm-lib/kcl/src/lsp/tests.rs b/src/wasm-lib/kcl/src/lsp/tests.rs index 606ec3370..bb2f8991d 100644 --- a/src/wasm-lib/kcl/src/lsp/tests.rs +++ b/src/wasm-lib/kcl/src/lsp/tests.rs @@ -7,6 +7,7 @@ use tower_lsp::{ }; use crate::{ + ast::types::{Node, Program}, executor::ProgramMemory, lsp::test_util::{copilot_lsp_server, kcl_lsp_server}, }; @@ -1070,7 +1071,7 @@ fn myFn = (param1) => { // Get the ast. let ast = server.ast_map.get("file:///test.kcl").unwrap().clone(); - assert!(ast != crate::ast::types::Program::default()); + assert!(ast != Node::::default()); // Send semantic tokens request. let semantic_tokens = server @@ -2396,7 +2397,7 @@ async fn kcl_test_kcl_lsp_full_to_empty_file_updates_ast_and_memory() { // Get the ast. let ast = server.ast_map.get("file:///test.kcl").unwrap().clone(); - assert!(ast != crate::ast::types::Program::default()); + assert!(ast != Node::::default()); // Get the memory. let memory = server.memory_map.get("file:///test.kcl").unwrap().clone(); assert!(memory != ProgramMemory::default()); @@ -2416,7 +2417,7 @@ async fn kcl_test_kcl_lsp_full_to_empty_file_updates_ast_and_memory() { }) .await; - let mut default_hashed = crate::ast::types::Program::default(); + let mut default_hashed = Node::::default(); default_hashed.compute_digest(); // Get the ast. @@ -2453,7 +2454,7 @@ async fn kcl_test_kcl_lsp_code_unchanged_but_has_diagnostics_reexecute() { // Get the ast. let ast = server.ast_map.get("file:///test.kcl").unwrap().clone(); - assert!(ast != crate::ast::types::Program::default()); + assert!(ast != Node::::default()); // Get the memory. let memory = server.memory_map.get("file:///test.kcl").unwrap().clone(); assert!(memory != ProgramMemory::default()); @@ -2487,9 +2488,9 @@ async fn kcl_test_kcl_lsp_code_unchanged_but_has_diagnostics_reexecute() { // Clear the ast and memory. server .ast_map - .insert("file:///test.kcl".to_string(), crate::ast::types::Program::default()); + .insert("file:///test.kcl".to_string(), Node::::default()); let ast = server.ast_map.get("file:///test.kcl").unwrap().clone(); - assert_eq!(ast, crate::ast::types::Program::default()); + assert_eq!(ast, Node::::default()); server .memory_map .insert("file:///test.kcl".to_string(), ProgramMemory::default()); @@ -2513,7 +2514,7 @@ async fn kcl_test_kcl_lsp_code_unchanged_but_has_diagnostics_reexecute() { // Get the ast. let ast = server.ast_map.get("file:///test.kcl").unwrap().clone(); - assert!(ast != crate::ast::types::Program::default()); + assert!(ast != Node::::default()); // Get the memory. let memory = server.memory_map.get("file:///test.kcl").unwrap().clone(); assert!(memory != ProgramMemory::default()); @@ -2549,7 +2550,7 @@ async fn kcl_test_kcl_lsp_code_and_ast_unchanged_but_has_diagnostics_reexecute() // Get the ast. let ast = server.ast_map.get("file:///test.kcl").unwrap().clone(); - assert!(ast != crate::ast::types::Program::default()); + assert!(ast != Node::::default()); // Get the memory. let memory = server.memory_map.get("file:///test.kcl").unwrap().clone(); assert!(memory != ProgramMemory::default()); @@ -2604,7 +2605,7 @@ async fn kcl_test_kcl_lsp_code_and_ast_unchanged_but_has_diagnostics_reexecute() // Get the ast. let ast = server.ast_map.get("file:///test.kcl").unwrap().clone(); - assert!(ast != crate::ast::types::Program::default()); + assert!(ast != Node::::default()); // Get the memory. let memory = server.memory_map.get("file:///test.kcl").unwrap().clone(); assert!(memory != ProgramMemory::default()); @@ -2640,7 +2641,7 @@ async fn kcl_test_kcl_lsp_code_and_ast_units_unchanged_but_has_diagnostics_reexe // Get the ast. let ast = server.ast_map.get("file:///test.kcl").unwrap().clone(); - assert!(ast != crate::ast::types::Program::default()); + assert!(ast != Node::::default()); // Get the memory. let memory = server.memory_map.get("file:///test.kcl").unwrap().clone(); assert!(memory != ProgramMemory::default()); @@ -2698,7 +2699,7 @@ async fn kcl_test_kcl_lsp_code_and_ast_units_unchanged_but_has_diagnostics_reexe // Get the ast. let ast = server.ast_map.get("file:///test.kcl").unwrap().clone(); - assert!(ast != crate::ast::types::Program::default()); + assert!(ast != Node::::default()); // Get the memory. let memory = server.memory_map.get("file:///test.kcl").unwrap().clone(); assert!(memory != ProgramMemory::default()); @@ -2734,7 +2735,7 @@ async fn kcl_test_kcl_lsp_code_and_ast_units_unchanged_but_has_memory_reexecute_ // Get the ast. let ast = server.ast_map.get("file:///test.kcl").unwrap().clone(); - assert!(ast != crate::ast::types::Program::default()); + assert!(ast != Node::::default()); // Get the memory. let memory = server.memory_map.get("file:///test.kcl").unwrap().clone(); assert!(memory != ProgramMemory::default()); @@ -2770,7 +2771,7 @@ async fn kcl_test_kcl_lsp_code_and_ast_units_unchanged_but_has_memory_reexecute_ // Get the ast. let ast = server.ast_map.get("file:///test.kcl").unwrap().clone(); - assert!(ast != crate::ast::types::Program::default()); + assert!(ast != Node::::default()); // Get the memory. let memory = server.memory_map.get("file:///test.kcl").unwrap().clone(); assert!(memory != ProgramMemory::default()); @@ -2806,7 +2807,7 @@ async fn kcl_test_kcl_lsp_cant_execute_set() { // Get the ast. let ast = server.ast_map.get("file:///test.kcl").unwrap().clone(); - assert!(ast != crate::ast::types::Program::default()); + assert!(ast != Node::::default()); // Get the memory. let memory = server.memory_map.get("file:///test.kcl").unwrap().clone(); assert!(memory != ProgramMemory::default()); @@ -2841,7 +2842,7 @@ async fn kcl_test_kcl_lsp_cant_execute_set() { // Get the ast. let ast = server.ast_map.get("file:///test.kcl").unwrap().clone(); - assert!(ast != crate::ast::types::Program::default()); + assert!(ast != Node::::default()); // Get the memory. let memory = server.memory_map.get("file:///test.kcl").unwrap().clone(); assert!(memory != ProgramMemory::default()); @@ -2883,7 +2884,7 @@ async fn kcl_test_kcl_lsp_cant_execute_set() { let units = server.executor_ctx().await.clone().unwrap().settings.units; assert_eq!(units, crate::settings::types::UnitLength::Mm); - let mut default_hashed = crate::ast::types::Program::default(); + let mut default_hashed = Node::::default(); default_hashed.compute_digest(); // Get the ast. @@ -2924,7 +2925,7 @@ async fn kcl_test_kcl_lsp_cant_execute_set() { // Get the ast. let ast = server.ast_map.get("file:///test.kcl").unwrap().clone(); - assert!(ast != crate::ast::types::Program::default()); + assert!(ast != Node::::default()); // Get the memory. let memory = server.memory_map.get("file:///test.kcl").unwrap().clone(); // Now it should NOT be the default memory. @@ -3064,7 +3065,7 @@ const part001 = startSketchOn('XY') // Get the ast. let ast = server.ast_map.get("file:///test.kcl").unwrap().clone(); - assert!(ast != crate::ast::types::Program::default()); + assert!(ast != Node::::default()); // Assure we have one diagnostics. let diagnostics = server.diagnostics_map.get("file:///test.kcl").unwrap().clone(); @@ -3087,7 +3088,7 @@ const part001 = startSketchOn('XY') // Get the ast. let ast = server.ast_map.get("file:///test.kcl").unwrap().clone(); - assert!(ast != crate::ast::types::Program::default()); + assert!(ast != Node::::default()); // Assure we have one diagnostics. let diagnostics = server.diagnostics_map.get("file:///test.kcl").unwrap().clone(); @@ -3183,7 +3184,7 @@ const part001 = startSketchOn('XY') // Get the ast. let ast = server.ast_map.get("file:///test.kcl").unwrap().clone(); - assert!(ast != crate::ast::types::Program::default()); + assert!(ast != Node::::default()); // Get the memory. let memory = server.memory_map.get("file:///test.kcl"); assert!(memory.is_none()); @@ -3205,7 +3206,7 @@ const part001 = startSketchOn('XY') // Get the ast. let ast = server.ast_map.get("file:///test.kcl").unwrap().clone(); - assert!(ast != crate::ast::types::Program::default()); + assert!(ast != Node::::default()); // Get the memory. let memory = server.memory_map.get("file:///test.kcl"); assert!(memory.is_none()); @@ -3248,7 +3249,7 @@ const part001 = startSketchOn('XY') // Get the ast. let ast = server.ast_map.get("file:///test.kcl").unwrap().clone(); - assert!(ast != crate::ast::types::Program::default()); + assert!(ast != Node::::default()); // Get the memory. let memory = server.memory_map.get("file:///test.kcl"); assert!(memory.is_none()); @@ -3278,7 +3279,7 @@ const NEW_LINT = 1"# // Get the ast. let ast = server.ast_map.get("file:///test.kcl").unwrap().clone(); - assert!(ast != crate::ast::types::Program::default()); + assert!(ast != Node::::default()); // Get the memory. let memory = server.memory_map.get("file:///test.kcl"); assert!(memory.is_none()); @@ -3394,7 +3395,7 @@ const part001 = startSketchOn('XY') // Get the ast. let ast = server.ast_map.get("file:///test.kcl").unwrap().clone(); - assert!(ast != crate::ast::types::Program::default()); + assert!(ast != Node::::default()); // Get the symbols map. let symbols_map = server.symbols_map.get("file:///test.kcl").unwrap().clone(); @@ -3489,7 +3490,7 @@ const part001 = startSketchOn('XY') // Get the ast. let ast = server.ast_map.get("file:///test.kcl").unwrap().clone(); - assert!(ast != crate::ast::types::Program::default()); + assert!(ast != Node::::default()); // Get the symbols map. let symbols_map = server.symbols_map.get("file:///test.kcl").unwrap().clone(); @@ -3532,7 +3533,7 @@ const part001 = startSketchOn('XY') // Get the ast. let ast = server.ast_map.get("file:///test.kcl").unwrap().clone(); - assert!(ast != crate::ast::types::Program::default()); + assert!(ast != Node::::default()); // Get the symbols map. let symbols_map = server.symbols_map.get("file:///test.kcl").unwrap().clone(); diff --git a/src/wasm-lib/kcl/src/parser.rs b/src/wasm-lib/kcl/src/parser.rs index a871ace48..9fa74fcf9 100644 --- a/src/wasm-lib/kcl/src/parser.rs +++ b/src/wasm-lib/kcl/src/parser.rs @@ -1,5 +1,5 @@ use crate::{ - ast::types::Program, + ast::types::{Node, Program}, errors::{KclError, KclErrorDetails}, executor::SourceRange, token::{Token, TokenType}, @@ -13,7 +13,7 @@ pub const PIPE_SUBSTITUTION_OPERATOR: &str = "%"; pub const PIPE_OPERATOR: &str = "|>"; /// Parse the given KCL code into an AST. -pub fn parse(code: &str) -> Result { +pub fn parse(code: &str) -> Result, KclError> { let tokens = crate::token::lexer(code)?; let parser = Parser::new(tokens); parser.ast() @@ -33,7 +33,7 @@ impl Parser { } /// Run the parser - pub fn ast(&self) -> Result { + pub fn ast(&self) -> Result, KclError> { if !self.unknown_tokens.is_empty() { let source_ranges = self.unknown_tokens.iter().map(SourceRange::from).collect(); let token_list = self.unknown_tokens.iter().map(|t| t.value.as_str()).collect::>(); @@ -48,7 +48,7 @@ impl Parser { // Important, to not call this before the unknown tokens check. if self.tokens.is_empty() { // Empty file should just do nothing. - return Ok(Program::default()); + return Ok(Node::::default()); } // Check all the tokens are whitespace or comments. @@ -57,7 +57,7 @@ impl Parser { .iter() .all(|t| t.token_type.is_whitespace() || t.token_type.is_comment()) { - return Ok(Program::default()); + return Ok(Node::::default()); } parser_impl::run_parser(&mut self.tokens.as_slice()) diff --git a/src/wasm-lib/kcl/src/parser/math.rs b/src/wasm-lib/kcl/src/parser/math.rs index 4684bc395..e4744ed3d 100644 --- a/src/wasm-lib/kcl/src/parser/math.rs +++ b/src/wasm-lib/kcl/src/parser/math.rs @@ -1,18 +1,18 @@ use crate::{ - ast::types::{BinaryExpression, BinaryOperator, BinaryPart}, + ast::types::{BinaryExpression, BinaryOperator, BinaryPart, Node}, errors::{KclError, KclErrorDetails}, executor::SourceRange, }; /// Parses a list of tokens (in infix order, i.e. as the user typed them) /// into a binary expression tree. -pub fn parse(infix_tokens: Vec) -> Result { +pub fn parse(infix_tokens: Vec) -> Result, KclError> { let rpn = postfix(infix_tokens); evaluate(rpn) } /// Parses a list of tokens (in postfix order) into a binary expression tree. -fn evaluate(rpn: Vec) -> Result { +fn evaluate(rpn: Vec) -> Result, KclError> { let source_ranges = source_range(&rpn); let mut operand_stack: Vec = Vec::new(); let e = KclError::Internal(KclErrorDetails { @@ -28,14 +28,19 @@ fn evaluate(rpn: Vec) -> Result o, }; @@ -125,13 +130,15 @@ mod tests { fn parse_and_evaluate() { /// Make a literal fn lit(n: u8) -> BinaryPart { - BinaryPart::Literal(Box::new(Literal { - start: 0, - end: 0, - value: n.into(), - raw: n.to_string(), - digest: None, - })) + BinaryPart::Literal(Box::new(Node::new( + Literal { + value: n.into(), + raw: n.to_string(), + digest: None, + }, + 0, + 0, + ))) } let tests: Vec> = vec![ // 3 + 4 × 2 ÷ ( 1 − 5 ) ^ 2 ^ 3 @@ -142,14 +149,16 @@ mod tests { BinaryOperator::Mul.into(), lit(2).into(), BinaryOperator::Div.into(), - BinaryPart::BinaryExpression(Box::new(BinaryExpression { - start: 0, - end: 0, - operator: BinaryOperator::Sub, - left: lit(1), - right: lit(5), - digest: None, - })) + BinaryPart::BinaryExpression(Node::boxed( + BinaryExpression { + operator: BinaryOperator::Sub, + left: lit(1), + right: lit(5), + digest: None, + }, + 0, + 0, + )) .into(), BinaryOperator::Pow.into(), lit(2).into(), diff --git a/src/wasm-lib/kcl/src/parser/parser_impl.rs b/src/wasm-lib/kcl/src/parser/parser_impl.rs index 6b86e7f07..9e63a8f91 100644 --- a/src/wasm-lib/kcl/src/parser/parser_impl.rs +++ b/src/wasm-lib/kcl/src/parser/parser_impl.rs @@ -10,12 +10,12 @@ use winnow::{ use crate::{ ast::types::{ - ArrayExpression, ArrayRangeExpression, BinaryExpression, BinaryOperator, BinaryPart, BodyItem, CallExpression, - CommentStyle, ElseIf, Expr, ExpressionStatement, FnArgPrimitive, FnArgType, FunctionExpression, Identifier, - IfExpression, ImportItem, ImportStatement, ItemVisibility, Literal, LiteralIdentifier, LiteralValue, - MemberExpression, MemberObject, NonCodeMeta, NonCodeNode, NonCodeValue, ObjectExpression, ObjectProperty, - Parameter, PipeExpression, PipeSubstitution, Program, ReturnStatement, TagDeclarator, UnaryExpression, - UnaryOperator, ValueMeta, VariableDeclaration, VariableDeclarator, VariableKind, + ArrayExpression, ArrayRangeExpression, BinaryExpression, BinaryOperator, BinaryPart, BodyItem, BoxNode, + CallExpression, CommentStyle, ElseIf, Expr, ExpressionStatement, FnArgPrimitive, FnArgType, FunctionExpression, + Identifier, IfExpression, ImportItem, ImportStatement, ItemVisibility, Literal, LiteralIdentifier, + LiteralValue, MemberExpression, MemberObject, Node, NonCodeMeta, NonCodeNode, NonCodeValue, ObjectExpression, + ObjectProperty, Parameter, PipeExpression, PipeSubstitution, Program, ReturnStatement, TagDeclarator, + UnaryExpression, UnaryOperator, VariableDeclaration, VariableDeclarator, VariableKind, }, errors::{KclError, KclErrorDetails}, executor::SourceRange, @@ -31,7 +31,7 @@ type PResult = winnow::prelude::PResult; type TokenSlice<'slice, 'input> = &'slice mut &'input [Token]; -pub fn run_parser(i: TokenSlice) -> Result { +pub fn run_parser(i: TokenSlice) -> Result, KclError> { program.parse(i).map_err(KclError::from) } @@ -39,13 +39,13 @@ fn expected(what: &'static str) -> StrContext { StrContext::Expected(StrContextValue::Description(what)) } -fn program(i: TokenSlice) -> PResult { +fn program(i: TokenSlice) -> PResult> { let shebang = opt(shebang).parse_next(i)?; let mut out = function_body.parse_next(i)?; // Add the shebang to the non-code meta. if let Some(shebang) = shebang { - out.non_code_meta.start.insert(0, shebang); + out.non_code_meta.start_nodes.insert(0, shebang); } // Match original parser behaviour, for now. // Once this is merged and stable, consider changing this as I think it's more accurate @@ -70,26 +70,28 @@ fn count_in(target: char, s: &str) -> usize { } /// Matches all four cases of NonCodeValue -fn non_code_node(i: TokenSlice) -> PResult { +fn non_code_node(i: TokenSlice) -> PResult> { /// Matches one case of NonCodeValue /// See docstring on [NonCodeValue::NewLineBlockComment] for why that case is different to the others. - fn non_code_node_leading_whitespace(i: TokenSlice) -> PResult { + fn non_code_node_leading_whitespace(i: TokenSlice) -> PResult> { let leading_whitespace = one_of(TokenType::Whitespace) .context(expected("whitespace, with a newline")) .parse_next(i)?; let has_empty_line = count_in('\n', &leading_whitespace.value) >= 2; non_code_node_no_leading_whitespace - .verify_map(|node: NonCodeNode| match node.value { - NonCodeValue::BlockComment { value, style } => Some(NonCodeNode { - start: leading_whitespace.start, - end: node.end + 1, - value: if has_empty_line { - NonCodeValue::NewLineBlockComment { value, style } - } else { - NonCodeValue::BlockComment { value, style } + .verify_map(|node: Node| match node.inner.value { + NonCodeValue::BlockComment { value, style } => Some(Node::new( + NonCodeNode { + value: if has_empty_line { + NonCodeValue::NewLineBlockComment { value, style } + } else { + NonCodeValue::BlockComment { value, style } + }, + digest: None, }, - digest: None, - }), + leading_whitespace.start, + node.end + 1, + )), _ => None, }) .context(expected("a comment or whitespace")) @@ -100,7 +102,7 @@ fn non_code_node(i: TokenSlice) -> PResult { } // Matches remaining three cases of NonCodeValue -fn non_code_node_no_leading_whitespace(i: TokenSlice) -> PResult { +fn non_code_node_no_leading_whitespace(i: TokenSlice) -> PResult> { any.verify_map(|token: Token| { if token.is_code_token() { None @@ -122,19 +124,14 @@ fn non_code_node_no_leading_whitespace(i: TokenSlice) -> PResult { }, _ => return None, }; - Some(NonCodeNode { - start: token.start, - end: token.end, - value, - digest: None, - }) + Some(Node::new(NonCodeNode { value, digest: None }, token.start, token.end)) } }) .context(expected("Non-code token (comments or whitespace)")) .parse_next(i) } -fn pipe_expression(i: TokenSlice) -> PResult { +fn pipe_expression(i: TokenSlice) -> PResult> { let mut non_code_meta = NonCodeMeta::default(); let (head, noncode): (_, Vec<_>) = terminated( ( @@ -194,16 +191,18 @@ fn pipe_expression(i: TokenSlice) -> PResult { non_code_meta.insert(code_count, nc); } } - Ok(PipeExpression { + Ok(Node { start: values.first().unwrap().start(), end: values.last().unwrap().end().max(max_noncode_end), - body: values, - non_code_meta, - digest: None, + inner: PipeExpression { + body: values, + non_code_meta, + digest: None, + }, }) } -fn bool_value(i: TokenSlice) -> PResult { +fn bool_value(i: TokenSlice) -> PResult> { let (value, token) = any .try_map(|token: Token| match token.token_type { TokenType::Keyword if token.value == "true" => Ok((true, token)), @@ -215,23 +214,26 @@ fn bool_value(i: TokenSlice) -> PResult { }) .context(expected("a boolean literal (either true or false)")) .parse_next(i)?; - Ok(Literal { - start: token.start, - end: token.end, - value: LiteralValue::Bool(value), - raw: value.to_string(), - digest: None, - }) + Ok(Box::new(Node::new( + Literal { + value: LiteralValue::Bool(value), + raw: value.to_string(), + digest: None, + }, + token.start, + token.end, + ))) } -pub fn literal(i: TokenSlice) -> PResult { +pub fn literal(i: TokenSlice) -> PResult> { alt((string_literal, unsigned_number_literal)) + .map(Box::new) .context(expected("a KCL literal, like 'myPart' or 3")) .parse_next(i) } /// Parse a KCL string literal -pub fn string_literal(i: TokenSlice) -> PResult { +pub fn string_literal(i: TokenSlice) -> PResult> { let (value, token) = any .try_map(|token: Token| match token.token_type { TokenType::String => { @@ -245,17 +247,19 @@ pub fn string_literal(i: TokenSlice) -> PResult { }) .context(expected("string literal (like \"myPart\"")) .parse_next(i)?; - Ok(Literal { - start: token.start, - end: token.end, - value, - raw: token.value.clone(), - digest: None, - }) + Ok(Node::new( + Literal { + value, + raw: token.value.clone(), + digest: None, + }, + token.start, + token.end, + )) } /// Parse a KCL literal number, with no - sign. -pub(crate) fn unsigned_number_literal(i: TokenSlice) -> PResult { +pub(crate) fn unsigned_number_literal(i: TokenSlice) -> PResult> { let (value, token) = any .try_map(|token: Token| match token.token_type { TokenType::Number => { @@ -278,13 +282,15 @@ pub(crate) fn unsigned_number_literal(i: TokenSlice) -> PResult { }) .context(expected("an unsigned number literal (e.g. 3 or 12.5)")) .parse_next(i)?; - Ok(Literal { - start: token.start, - end: token.end, - value, - raw: token.value.clone(), - digest: None, - }) + Ok(Node::new( + Literal { + value, + raw: token.value.clone(), + digest: None, + }, + token.start, + token.end, + )) } /// Parse a KCL operator that takes a left- and right-hand side argument. @@ -421,7 +427,7 @@ fn whitespace(i: TokenSlice) -> PResult> { /// A shebang is a line at the start of a file that starts with `#!`. /// If the shebang is present it takes up the whole line. -fn shebang(i: TokenSlice) -> PResult { +fn shebang(i: TokenSlice) -> PResult> { // Parse the hash and the bang. hash.parse_next(i)?; bang.parse_next(i)?; @@ -443,14 +449,16 @@ fn shebang(i: TokenSlice) -> PResult { // Strip all the whitespace after the shebang. opt(whitespace).parse_next(i)?; - Ok(NonCodeNode { - start: 0, - end: tokens.last().unwrap().end, - value: NonCodeValue::Shebang { - value: format!("#!{}", value), + Ok(Node::new( + NonCodeNode { + value: NonCodeValue::Shebang { + value: format!("#!{}", value), + }, + digest: None, }, - digest: None, - }) + 0, + tokens.last().unwrap().end, + )) } /// Parse the = operator. @@ -462,7 +470,7 @@ fn equals(i: TokenSlice) -> PResult { #[allow(clippy::large_enum_variant)] pub enum NonCodeOr { - NonCode(NonCodeNode), + NonCode(Node), Code(T), } @@ -477,17 +485,19 @@ fn array(i: TokenSlice) -> PResult { } /// Match an empty array. -fn array_empty(i: TokenSlice) -> PResult { +fn array_empty(i: TokenSlice) -> PResult> { let start = open_bracket(i)?.start; ignore_whitespace(i); let end = close_bracket(i)?.end; - Ok(ArrayExpression { + Ok(Node::new( + ArrayExpression { + elements: Default::default(), + non_code_meta: Default::default(), + digest: None, + }, start, end, - elements: Default::default(), - non_code_meta: Default::default(), - digest: None, - }) + )) } /// Match something that separates elements of an array. @@ -501,7 +511,7 @@ fn array_separator(i: TokenSlice) -> PResult<()> { .parse_next(i) } -pub(crate) fn array_elem_by_elem(i: TokenSlice) -> PResult { +pub(crate) fn array_elem_by_elem(i: TokenSlice) -> PResult> { let start = open_bracket(i)?.start; ignore_whitespace(i); let elements: Vec<_> = repeat( @@ -533,39 +543,43 @@ pub(crate) fn array_elem_by_elem(i: TokenSlice) -> PResult { ); let non_code_meta = NonCodeMeta { non_code_nodes, - start: Vec::new(), + start_nodes: Vec::new(), digest: None, }; - Ok(ArrayExpression { + Ok(Node::new( + ArrayExpression { + elements, + non_code_meta, + digest: None, + }, start, end, - elements, - non_code_meta, - digest: None, - }) + )) } -fn array_end_start(i: TokenSlice) -> PResult { +fn array_end_start(i: TokenSlice) -> PResult> { let start = open_bracket(i)?.start; ignore_whitespace(i); - let start_element = Box::new(expression.parse_next(i)?); + let start_element = expression.parse_next(i)?; ignore_whitespace(i); double_period.parse_next(i)?; ignore_whitespace(i); - let end_element = Box::new(expression.parse_next(i)?); + let end_element = expression.parse_next(i)?; ignore_whitespace(i); let end = close_bracket(i)?.end; - Ok(ArrayRangeExpression { + Ok(Node::new( + ArrayRangeExpression { + start_element, + end_element, + end_inclusive: true, + digest: None, + }, start, end, - start_element, - end_element, - end_inclusive: true, - digest: None, - }) + )) } -fn object_property(i: TokenSlice) -> PResult { +fn object_property(i: TokenSlice) -> PResult> { let key = identifier.context(expected("the property's key (the name or identifier of the property), e.g. in 'height: 4', 'height' is the property key")).parse_next(i)?; ignore_whitespace(i); colon @@ -579,12 +593,14 @@ fn object_property(i: TokenSlice) -> PResult { "the value which you're setting the property to, e.g. in 'height: 4', the value is 4", )) .parse_next(i)?; - Ok(ObjectProperty { + Ok(Node { start: key.start, end: expr.end(), - key, - value: expr, - digest: None, + inner: ObjectProperty { + key, + value: expr, + digest: None, + }, }) } @@ -600,7 +616,7 @@ fn property_separator(i: TokenSlice) -> PResult<()> { } /// Parse a KCL object value. -pub(crate) fn object(i: TokenSlice) -> PResult { +pub(crate) fn object(i: TokenSlice) -> PResult> { let start = open_brace(i)?.start; ignore_whitespace(i); let properties: Vec<_> = repeat( @@ -637,24 +653,22 @@ pub(crate) fn object(i: TokenSlice) -> PResult { non_code_nodes, ..Default::default() }; - Ok(ObjectExpression { + Ok(Node::new( + ObjectExpression { + properties, + non_code_meta, + digest: None, + }, start, end, - properties, - non_code_meta, - digest: None, - }) + )) } /// Parse the % symbol, used to substitute a curried argument from a |> (pipe). -fn pipe_sub(i: TokenSlice) -> PResult { +fn pipe_sub(i: TokenSlice) -> PResult> { any.try_map(|token: Token| { if matches!(token.token_type, TokenType::Operator) && token.value == PIPE_SUBSTITUTION_OPERATOR { - Ok(PipeSubstitution { - start: token.start, - end: token.end, - digest: None, - }) + Ok(Node::new(PipeSubstitution { digest: None }, token.start, token.end)) } else { Err(KclError::Syntax(KclErrorDetails { source_ranges: token.as_source_ranges(), @@ -669,7 +683,7 @@ fn pipe_sub(i: TokenSlice) -> PResult { .parse_next(i) } -fn else_if(i: TokenSlice) -> PResult { +fn else_if(i: TokenSlice) -> PResult> { let start = any .try_map(|token: Token| { if matches!(token.token_type, TokenType::Keyword) && token.value == "else" { @@ -708,16 +722,18 @@ fn else_if(i: TokenSlice) -> PResult { ignore_whitespace(i); let end = close_brace(i)?.end; ignore_whitespace(i); - Ok(ElseIf { + Ok(Node::new( + ElseIf { + cond, + then_val, + digest: Default::default(), + }, start, end, - cond, - then_val, - digest: Default::default(), - }) + )) } -fn if_expr(i: TokenSlice) -> PResult { +fn if_expr(i: TokenSlice) -> PResult> { let start = any .try_map(|token: Token| { if matches!(token.token_type, TokenType::Keyword) && token.value == "if" { @@ -771,15 +787,17 @@ fn if_expr(i: TokenSlice) -> PResult { .map(Box::new)?; ignore_whitespace(i); let end = close_brace(i)?.end; - Ok(IfExpression { + Ok(Node::boxed( + IfExpression { + cond, + then_val, + else_ifs, + final_else, + digest: Default::default(), + }, start, end, - cond, - then_val, - else_ifs, - final_else, - digest: Default::default(), - }) + )) } // Looks like @@ -787,7 +805,7 @@ fn if_expr(i: TokenSlice) -> PResult { // const x = arg0 + arg1; // return x // } -fn function_expression(i: TokenSlice) -> PResult { +fn function_expression(i: TokenSlice) -> PResult> { let start = open_paren(i)?.start; let params = parameters(i)?; close_paren(i)?; @@ -800,14 +818,16 @@ fn function_expression(i: TokenSlice) -> PResult { open_brace(i)?; let body = function_body(i)?; let end = close_brace(i)?.end; - Ok(FunctionExpression { + Ok(Node::new( + FunctionExpression { + params, + body, + return_type, + digest: None, + }, start, end, - params, - body, - return_type, - digest: None, - }) + )) } /// E.g. `person.name` @@ -827,7 +847,7 @@ fn member_expression_subscript(i: TokenSlice) -> PResult<(LiteralIdentifier, usi let _ = open_bracket.parse_next(i)?; let property = alt(( sketch_keyword.map(Box::new).map(LiteralIdentifier::Identifier), - literal.map(Box::new).map(LiteralIdentifier::Literal), + literal.map(LiteralIdentifier::Literal), identifier.map(Box::new).map(LiteralIdentifier::Identifier), )) .parse_next(i)?; @@ -839,7 +859,7 @@ fn member_expression_subscript(i: TokenSlice) -> PResult<(LiteralIdentifier, usi /// Get a property of an object, or an index of an array, or a member of a collection. /// Can be arbitrarily nested, e.g. `people[i]['adam'].age`. -fn member_expression(i: TokenSlice) -> PResult { +fn member_expression(i: TokenSlice) -> PResult> { // This is an identifier, followed by a sequence of members (aka properties) // First, the identifier. let id = identifier.context(expected("the identifier of the object whose property you're trying to access, e.g. in 'shape.size.width', 'shape' is the identifier")).parse_next(i)?; @@ -854,14 +874,16 @@ fn member_expression(i: TokenSlice) -> PResult { // which is guaranteed to have >=1 elements. let (property, end, computed) = members.remove(0); let start = id.start; - let initial_member_expression = MemberExpression { + let initial_member_expression = Node::new( + MemberExpression { + object: MemberObject::Identifier(Box::new(id)), + computed, + property, + digest: None, + }, start, end, - object: MemberObject::Identifier(Box::new(id)), - computed, - property, - digest: None, - }; + ); // Each remaining member wraps the current member expression inside another member expression. Ok(members @@ -869,20 +891,22 @@ fn member_expression(i: TokenSlice) -> PResult { // Take the accumulated member expression from the previous iteration, // and use it as the `object` of a new, bigger member expression. .fold(initial_member_expression, |accumulated, (property, end, computed)| { - MemberExpression { + Node::new( + MemberExpression { + object: MemberObject::MemberExpression(Box::new(accumulated)), + computed, + property, + digest: None, + }, start, end, - object: MemberObject::MemberExpression(Box::new(accumulated)), - computed, - property, - digest: None, - } + ) })) } /// Find a noncode node which occurs just after a body item, /// such that if the noncode item is a comment, it might be an inline comment. -fn noncode_just_after_code(i: TokenSlice) -> PResult { +fn noncode_just_after_code(i: TokenSlice) -> PResult> { let ws = opt(whitespace).parse_next(i)?; // What is the preceding whitespace like? @@ -901,7 +925,7 @@ fn noncode_just_after_code(i: TokenSlice) -> PResult { if has_empty_line { // There's an empty line between the body item and the comment, // This means the comment is a NewLineBlockComment! - let value = match nc.value { + let value = match nc.inner.value { NonCodeValue::Shebang { value } => NonCodeValue::Shebang { value }, // Change block comments to inline, as discussed above NonCodeValue::BlockComment { value, style } => NonCodeValue::NewLineBlockComment { value, style }, @@ -910,18 +934,14 @@ fn noncode_just_after_code(i: TokenSlice) -> PResult { x @ NonCodeValue::NewLineBlockComment { .. } => x, x @ NonCodeValue::NewLine => x, }; - NonCodeNode { - value, - start: nc.start.saturating_sub(1), - ..nc - } + Node::new(NonCodeNode { value, ..nc.inner }, nc.start.saturating_sub(1), nc.end) } else if has_newline { // Nothing has to change, a single newline does not need preserving. nc } else { // There's no newline between the body item and comment, // so if this is a comment, it must be inline with code. - let value = match nc.value { + let value = match nc.inner.value { NonCodeValue::Shebang { value } => NonCodeValue::Shebang { value }, // Change block comments to inline, as discussed above NonCodeValue::BlockComment { value, style } => NonCodeValue::InlineComment { value, style }, @@ -930,13 +950,10 @@ fn noncode_just_after_code(i: TokenSlice) -> PResult { x @ NonCodeValue::NewLineBlockComment { .. } => x, x @ NonCodeValue::NewLine => x, }; - NonCodeNode { value, ..nc } + Node::new(NonCodeNode { value, ..nc.inner }, nc.start, nc.end) } }) - .map(|nc| NonCodeNode { - start: nc.start.saturating_sub(1), - ..nc - }) + .map(|nc| Node::new(nc.inner, nc.start.saturating_sub(1), nc.end)) .parse_next(i)?; Ok(nc) } @@ -948,8 +965,17 @@ fn noncode_just_after_code(i: TokenSlice) -> PResult { #[derive(Debug)] #[allow(clippy::large_enum_variant)] enum WithinFunction { - BodyItem((BodyItem, Option)), - NonCode(NonCodeNode), + BodyItem((BodyItem, Option>)), + NonCode(Node), +} + +impl WithinFunction { + fn is_newline(&self) -> bool { + match self { + WithinFunction::NonCode(nc) => nc.value == NonCodeValue::NewLine, + _ => false, + } + } } fn body_items_within_function(i: TokenSlice) -> PResult { @@ -983,7 +1009,7 @@ fn body_items_within_function(i: TokenSlice) -> PResult { } /// Parse the body of a user-defined function. -pub fn function_body(i: TokenSlice) -> PResult { +pub fn function_body(i: TokenSlice) -> PResult> { let leading_whitespace_start = alt(( peek(non_code_node).map(|_| None), // Subtract 1 from `t.start` to match behaviour of the old parser. @@ -1014,13 +1040,7 @@ pub fn function_body(i: TokenSlice) -> PResult { // The solution is that this parser should check if the last matched body item was an empty line, // and if so, then ignore the separator parser for the current iteration. loop { - let last_match_was_empty_line = matches!( - things_within_body.last(), - Some(WithinFunction::NonCode(NonCodeNode { - value: NonCodeValue::NewLine, - .. - })) - ); + let last_match_was_empty_line = things_within_body.last().map(|wf| wf.is_newline()).unwrap_or(false); use winnow::stream::Stream; @@ -1034,12 +1054,14 @@ pub fn function_body(i: TokenSlice) -> PResult { // deliberately put an empty line there. We should track this and preserve it. if let Ok(ref ws_token) = found_ws { if ws_token.value.contains("\n\n") { - things_within_body.push(WithinFunction::NonCode(NonCodeNode { - start: ws_token.start, - end: ws_token.end, - value: NonCodeValue::NewLine, - digest: None, - })); + things_within_body.push(WithinFunction::NonCode(Node::new( + NonCodeNode { + value: NonCodeValue::NewLine, + digest: None, + }, + ws_token.start, + ws_token.end, + ))); } } @@ -1096,7 +1118,7 @@ pub fn function_body(i: TokenSlice) -> PResult { } end = nc.end; if body.is_empty() { - non_code_meta.start.push(nc); + non_code_meta.start_nodes.push(nc); } else { non_code_meta.insert(body.len() - 1, nc); } @@ -1115,16 +1137,18 @@ pub fn function_body(i: TokenSlice) -> PResult { end = end.max(end_ws); } end += 1; - Ok(Program { + Ok(Node::new( + Program { + body, + non_code_meta, + digest: None, + }, start, end, - body, - non_code_meta, - digest: None, - }) + )) } -fn import_stmt(i: TokenSlice) -> PResult> { +fn import_stmt(i: TokenSlice) -> PResult> { let import_token = any .try_map(|token: Token| { if matches!(token.token_type, TokenType::Keyword) && token.value == "import" { @@ -1165,8 +1189,8 @@ fn import_stmt(i: TokenSlice) -> PResult> { require_whitespace(i)?; let path = string_literal(i)?; - let end = path.end(); - let path_string = match path.value { + let end = path.end; + let path_string = match path.inner.value { LiteralValue::String(s) => s, _ => unreachable!(), }; @@ -1182,17 +1206,19 @@ fn import_stmt(i: TokenSlice) -> PResult> { .into(), )); } - Ok(Box::new(ImportStatement { - items, - path: path_string, - raw_path: path.raw, + Ok(Node::boxed( + ImportStatement { + items, + path: path_string, + raw_path: path.inner.raw, + digest: None, + }, start, end, - digest: None, - })) + )) } -fn import_item(i: TokenSlice) -> PResult { +fn import_item(i: TokenSlice) -> PResult> { let name = identifier.context(expected("an identifier to import")).parse_next(i)?; let start = name.start; let alias = opt(preceded( @@ -1201,17 +1227,19 @@ fn import_item(i: TokenSlice) -> PResult { )) .parse_next(i)?; let end = if let Some(ref alias) = alias { - alias.end() + alias.end } else { - name.end() + name.end }; - Ok(ImportItem { - name, - alias, + Ok(Node::new( + ImportItem { + name, + alias, + digest: None, + }, start, end, - digest: None, - }) + )) } fn import_as_keyword(i: TokenSlice) -> PResult { @@ -1230,7 +1258,7 @@ fn import_as_keyword(i: TokenSlice) -> PResult { } /// Parse a return statement of a user-defined function, e.g. `return x`. -pub fn return_stmt(i: TokenSlice) -> PResult { +pub fn return_stmt(i: TokenSlice) -> PResult> { let start = any .try_map(|token: Token| { if matches!(token.token_type, TokenType::Keyword) && token.value == "return" { @@ -1248,11 +1276,10 @@ pub fn return_stmt(i: TokenSlice) -> PResult { .parse_next(i)?; require_whitespace(i)?; let argument = expression(i)?; - Ok(ReturnStatement { + Ok(Node { start, end: argument.end(), - argument, - digest: None, + inner: ReturnStatement { argument, digest: None }, }) } @@ -1288,16 +1315,16 @@ fn unnecessarily_bracketed(i: TokenSlice) -> PResult { fn expr_allowed_in_pipe_expr(i: TokenSlice) -> PResult { alt(( member_expression.map(Box::new).map(Expr::MemberExpression), - bool_value.map(Box::new).map(Expr::Literal), + bool_value.map(Expr::Literal), tag.map(Box::new).map(Expr::TagDeclarator), - literal.map(Box::new).map(Expr::Literal), + literal.map(Expr::Literal), fn_call.map(Box::new).map(Expr::CallExpression), identifier.map(Box::new).map(Expr::Identifier), array, object.map(Box::new).map(Expr::ObjectExpression), pipe_sub.map(Box::new).map(Expr::PipeSubstitution), function_expression.map(Box::new).map(Expr::FunctionExpression), - if_expr.map(Box::new).map(Expr::IfExpression), + if_expr.map(Expr::IfExpression), unnecessarily_bracketed, )) .context(expected("a KCL expression (but not a pipe expression)")) @@ -1307,9 +1334,9 @@ fn expr_allowed_in_pipe_expr(i: TokenSlice) -> PResult { fn possible_operands(i: TokenSlice) -> PResult { alt(( unary_expression.map(Box::new).map(Expr::UnaryExpression), - bool_value.map(Box::new).map(Expr::Literal), + bool_value.map(Expr::Literal), member_expression.map(Box::new).map(Expr::MemberExpression), - literal.map(Box::new).map(Expr::Literal), + literal.map(Expr::Literal), fn_call.map(Box::new).map(Expr::CallExpression), identifier.map(Box::new).map(Expr::Identifier), binary_expr_in_parens.map(Box::new).map(Expr::BinaryExpression), @@ -1342,7 +1369,7 @@ fn declaration_keyword(i: TokenSlice) -> PResult<(VariableKind, Token)> { } /// Parse a variable/constant declaration. -fn declaration(i: TokenSlice) -> PResult> { +fn declaration(i: TokenSlice) -> PResult> { let (visibility, visibility_token) = opt(terminated(item_visibility, whitespace)) .parse_next(i)? .map_or((ItemVisibility::Default, None), |pair| (pair.0, Some(pair.1))); @@ -1361,7 +1388,7 @@ fn declaration(i: TokenSlice) -> PResult> { let (kind, mut start, dec_end) = if let Some((kind, token)) = &decl_token { (*kind, token.start, token.end) } else { - (VariableKind::Const, id.start(), id.end()) + (VariableKind::Const, id.start, id.end) }; if let Some(token) = visibility_token { start = token.start; @@ -1404,33 +1431,39 @@ fn declaration(i: TokenSlice) -> PResult> { .map_err(|e| e.cut())?; let end = val.end(); - Ok(Box::new(VariableDeclaration { + Ok(Box::new(Node { + inner: VariableDeclaration { + declarations: vec![Node { + start: id.start, + end, + inner: VariableDeclarator { + id, + init: val, + digest: None, + }, + }], + visibility, + kind, + digest: None, + }, start, end, - declarations: vec![VariableDeclarator { - start: id.start, - end, - id, - init: val, - digest: None, - }], - visibility, - kind, - digest: None, })) } -impl TryFrom for Identifier { +impl TryFrom for Node { type Error = KclError; fn try_from(token: Token) -> Result { if token.token_type == TokenType::Word { - Ok(Identifier { - start: token.start, - end: token.end, - name: token.value, - digest: None, - }) + Ok(Node::new( + Identifier { + name: token.value, + digest: None, + }, + token.start, + token.end, + )) } else { Err(KclError::Syntax(KclErrorDetails { source_ranges: token.as_source_ranges(), @@ -1444,21 +1477,23 @@ impl TryFrom for Identifier { } /// Parse a KCL identifier (name of a constant/variable/function) -fn identifier(i: TokenSlice) -> PResult { - any.try_map(Identifier::try_from) +fn identifier(i: TokenSlice) -> PResult> { + any.try_map(Node::::try_from) .context(expected("an identifier, e.g. 'width' or 'myPart'")) .parse_next(i) } -fn sketch_keyword(i: TokenSlice) -> PResult { +fn sketch_keyword(i: TokenSlice) -> PResult> { any.try_map(|token: Token| { if token.token_type == TokenType::Type && token.value == "sketch" { - Ok(Identifier { - start: token.start, - end: token.end, - name: token.value, - digest: None, - }) + Ok(Node::new( + Identifier { + name: token.value, + digest: None, + }, + token.start, + token.end, + )) } else { Err(KclError::Syntax(KclErrorDetails { source_ranges: token.as_source_ranges(), @@ -1470,18 +1505,20 @@ fn sketch_keyword(i: TokenSlice) -> PResult { .parse_next(i) } -impl TryFrom for TagDeclarator { +impl TryFrom for Node { type Error = KclError; fn try_from(token: Token) -> Result { if token.token_type == TokenType::Word { - Ok(TagDeclarator { - // We subtract 1 from the start because the tag starts with a `$`. - start: token.start - 1, - end: token.end, - name: token.value, - digest: None, - }) + Ok(Node::new( + TagDeclarator { + // We subtract 1 from the start because the tag starts with a `$`. + name: token.value, + digest: None, + }, + token.start - 1, + token.end, + )) } else { Err(KclError::Syntax(KclErrorDetails { source_ranges: token.as_source_ranges(), @@ -1491,7 +1528,7 @@ impl TryFrom for TagDeclarator { } } -impl TagDeclarator { +impl Node { fn into_valid_binding_name(self) -> Result { // Make sure they are not assigning a variable to a stdlib function. if crate::std::name_in_stdlib(&self.name) { @@ -1505,11 +1542,17 @@ impl TagDeclarator { } /// Parse a Kcl tag that starts with a `$`. -fn tag(i: TokenSlice) -> PResult { +fn tag(i: TokenSlice) -> PResult> { dollar.parse_next(i)?; - any.try_map(TagDeclarator::try_from) + let tag_declarator = any + .try_map(Node::::try_from) .context(expected("a tag, e.g. '$seg01' or '$line01'")) - .parse_next(i) + .parse_next(i)?; + // Now that we've parsed a tag declarator, verify that it's not a stdlib + // name. If it is, stop backtracking. + tag_declarator + .into_valid_binding_name() + .map_err(|e| ErrMode::Cut(ContextError::from(e))) } /// Helper function. Matches any number of whitespace tokens and ignores them. @@ -1527,7 +1570,7 @@ fn require_whitespace(i: TokenSlice) -> PResult<()> { repeat(1.., whitespace).parse_next(i) } -fn unary_expression(i: TokenSlice) -> PResult { +fn unary_expression(i: TokenSlice) -> PResult> { const EXPECTED: &str = "expected a unary operator (like '-', the negative-numeric operator),"; let (operator, op_token) = any .try_map(|token: Token| match token.token_type { @@ -1542,12 +1585,14 @@ fn unary_expression(i: TokenSlice) -> PResult { .context(expected("a unary expression, e.g. -x or -3")) .parse_next(i)?; let argument = operand.parse_next(i)?; - Ok(UnaryExpression { + Ok(Node { start: op_token.start, end: argument.end(), - operator, - argument, - digest: None, + inner: UnaryExpression { + operator, + argument, + digest: None, + }, }) } @@ -1574,7 +1619,7 @@ fn binary_expression_tokens(i: TokenSlice) -> PResult } /// Parse an infix binary expression. -fn binary_expression(i: TokenSlice) -> PResult { +fn binary_expression(i: TokenSlice) -> PResult> { // Find the slice of tokens which makes up the binary expression let tokens = binary_expression_tokens.parse_next(i)?; @@ -1584,7 +1629,7 @@ fn binary_expression(i: TokenSlice) -> PResult { Ok(expr) } -fn binary_expr_in_parens(i: TokenSlice) -> PResult { +fn binary_expr_in_parens(i: TokenSlice) -> PResult> { let span_with_brackets = bracketed_section.take().parse_next(i)?; let n = span_with_brackets.len(); let mut span_no_brackets = &span_with_brackets[1..n - 1]; @@ -1615,17 +1660,19 @@ fn bracketed_section(i: TokenSlice) -> PResult { } /// Parse a KCL expression statement. -fn expression_stmt(i: TokenSlice) -> PResult { +fn expression_stmt(i: TokenSlice) -> PResult> { let val = expression .context(expected( "an expression (i.e. a value, or an algorithm for calculating one), e.g. 'x + y' or '3' or 'width * 2'", )) .parse_next(i)?; - Ok(ExpressionStatement { + Ok(Node { start: val.start(), end: val.end(), - expression: val, - digest: None, + inner: ExpressionStatement { + expression: val, + digest: None, + }, }) } @@ -1818,7 +1865,8 @@ fn parameters(i: TokenSlice) -> PResult> { let params: Vec = candidates .into_iter() .map(|(arg_name, type_, optional)| { - let identifier = Identifier::try_from(arg_name).and_then(Identifier::into_valid_binding_name)?; + let identifier = + Node::::try_from(arg_name).and_then(Node::::into_valid_binding_name)?; Ok(Parameter { identifier, @@ -1854,8 +1902,8 @@ fn optional_after_required(params: &[Parameter]) -> Result<(), KclError> { Ok(()) } -impl Identifier { - fn into_valid_binding_name(self) -> Result { +impl Node { + fn into_valid_binding_name(self) -> Result, KclError> { // Make sure they are not assigning a variable to a stdlib function. if crate::std::name_in_stdlib(&self.name) { return Err(KclError::Syntax(KclErrorDetails { @@ -1868,15 +1916,15 @@ impl Identifier { } /// Introduce a new name, which binds some value. -fn binding_name(i: TokenSlice) -> PResult { +fn binding_name(i: TokenSlice) -> PResult> { identifier .context(expected("an identifier, which will be the name of some value")) - .try_map(Identifier::into_valid_binding_name) + .try_map(Node::::into_valid_binding_name) .context(expected("an identifier, which will be the name of some value")) .parse_next(i) } -fn fn_call(i: TokenSlice) -> PResult { +fn fn_call(i: TokenSlice) -> PResult> { let fn_name = identifier(i)?; opt(whitespace).parse_next(i)?; let _ = terminated(open_paren, opt(whitespace)).parse_next(i)?; @@ -1889,11 +1937,12 @@ fn fn_call(i: TokenSlice) -> PResult { continue; }; match spec_arg.type_.as_ref() { - "TagDeclarator" => match &arg { + "TagNode" => match &arg { Expr::Identifier(_) => { // These are fine since we want someone to be able to map a variable to a tag declarator. } Expr::TagDeclarator(tag) => { + // TODO: Remove this check. It should be redundant. tag.clone() .into_valid_binding_name() .map_err(|e| ErrMode::Cut(ContextError::from(e)))?; @@ -1926,13 +1975,15 @@ fn fn_call(i: TokenSlice) -> PResult { } } let end = preceded(opt(whitespace), close_paren).parse_next(i)?.end; - Ok(CallExpression { + Ok(Node { start: fn_name.start, end, - callee: fn_name, - arguments: args, - optional: false, - digest: None, + inner: CallExpression { + callee: fn_name, + arguments: args, + optional: false, + digest: None, + }, }) } @@ -1990,7 +2041,7 @@ mod tests { fn test_vardec_no_keyword() { let tokens = crate::token::lexer("x = 4").unwrap(); let vardec = declaration(&mut tokens.as_slice()).unwrap(); - assert_eq!(vardec.kind, VariableKind::Const); + assert_eq!(vardec.inner.kind, VariableKind::Const); let vardec = vardec.declarations.first().unwrap(); assert_eq!(vardec.id.name, "x"); let Expr::Literal(init_val) = &vardec.init else { @@ -2019,7 +2070,7 @@ mod tests { let mut slice = tokens.as_slice(); let expr = function_expression.parse_next(&mut slice).unwrap(); assert_eq!(expr.params, vec![]); - let comment_start = expr.body.non_code_meta.start.first().unwrap(); + let comment_start = expr.body.non_code_meta.start_nodes.first().unwrap(); let comment0 = &expr.body.non_code_meta.non_code_nodes.get(&0).unwrap()[0]; let comment1 = &expr.body.non_code_meta.non_code_nodes.get(&1).unwrap()[0]; assert_eq!(comment_start.value(), "comment 0"); @@ -2048,7 +2099,7 @@ comment */ const mySk1 = startSketchAt([0, 0])"#; let tokens = crate::token::lexer(test_program).unwrap(); let program = program.parse(&tokens).unwrap(); - let mut starting_comments = program.non_code_meta.start; + let mut starting_comments = program.inner.non_code_meta.start_nodes; assert_eq!(starting_comments.len(), 2); let start0 = starting_comments.remove(0); let start1 = starting_comments.remove(0); @@ -2065,15 +2116,15 @@ const mySk1 = startSketchAt([0, 0])"#; #[test] fn test_comment_in_pipe() { let tokens = crate::token::lexer(r#"const x = y() |> /*hi*/ z(%)"#).unwrap(); - let mut body = program.parse(&tokens).unwrap().body; + let mut body = program.parse(&tokens).unwrap().inner.body; let BodyItem::VariableDeclaration(mut item) = body.remove(0) else { panic!("expected vardec"); }; - let val = item.declarations.remove(0).init; + let val = item.declarations.remove(0).inner.init; let Expr::PipeExpression(pipe) = val else { panic!("expected pipe"); }; - let mut noncode = pipe.non_code_meta; + let mut noncode = pipe.inner.non_code_meta; assert_eq!(noncode.non_code_nodes.len(), 1); let comment = noncode.non_code_nodes.remove(&0).unwrap().pop().unwrap(); assert_eq!( @@ -2107,40 +2158,50 @@ const mySk1 = startSketchAt([0, 0])"#; let expr = function_expression.parse_next(&mut slice).unwrap(); assert_eq!( expr, - FunctionExpression { - start: 0, - end: 47, - params: Default::default(), - body: Program { - start: 7, - end: 47, - body: vec![BodyItem::ReturnStatement(ReturnStatement { - start: 25, - end: 33, - argument: Expr::Literal(Box::new(Literal { - start: 32, - end: 33, - value: 2u32.into(), - raw: "2".to_owned(), + Node::new( + FunctionExpression { + params: Default::default(), + body: Node::new( + Program { + body: vec![BodyItem::ReturnStatement(Node::new( + ReturnStatement { + argument: Expr::Literal(Box::new(Node::new( + Literal { + value: 2u32.into(), + raw: "2".to_owned(), + digest: None, + }, + 32, + 33, + ))), + digest: None, + }, + 25, + 33, + ))], + non_code_meta: NonCodeMeta { + non_code_nodes: Default::default(), + start_nodes: vec![Node::new( + NonCodeNode { + value: NonCodeValue::NewLine, + digest: None + }, + 7, + 25, + )], + digest: None, + }, digest: None, - })), - digest: None, - })], - non_code_meta: NonCodeMeta { - non_code_nodes: Default::default(), - start: vec![NonCodeNode { - start: 7, - end: 25, - value: NonCodeValue::NewLine, - digest: None - }], - digest: None, - }, + }, + 7, + 47, + ), + return_type: None, digest: None, }, - return_type: None, - digest: None, - } + 0, + 47, + ) ); } @@ -2153,8 +2214,11 @@ const mySk1 = startSketchAt([0, 0])"#; let tokens = crate::token::lexer(test_input).unwrap(); let mut slice = tokens.as_slice(); - let PipeExpression { - body, non_code_meta, .. + let Node { + inner: PipeExpression { + body, non_code_meta, .. + }, + .. } = pipe_expression.parse_next(&mut slice).unwrap(); assert_eq!(non_code_meta.non_code_nodes.len(), 1); assert_eq!( @@ -2179,49 +2243,59 @@ const mySk1 = startSketchAt([0, 0])"#; "#; let tokens = crate::token::lexer(test_program).unwrap(); - let Program { non_code_meta, .. } = function_body.parse(&tokens).unwrap(); + let Program { non_code_meta, .. } = function_body.parse(&tokens).unwrap().inner; assert_eq!( - vec![NonCodeNode { - start: 0, - end: 20, - value: NonCodeValue::BlockComment { - value: "this is a comment".to_owned(), - style: CommentStyle::Line - }, - digest: None, - }], - non_code_meta.start, - ); - assert_eq!( - Some(&vec![ + vec![Node::new( NonCodeNode { - start: 60, - end: 82, - value: NonCodeValue::InlineComment { - value: "block\n comment".to_owned(), - style: CommentStyle::Block + value: NonCodeValue::BlockComment { + value: "this is a comment".to_owned(), + style: CommentStyle::Line }, digest: None, }, - NonCodeNode { - start: 82, - end: 86, - value: NonCodeValue::NewLine, - digest: None, - }, + 0, + 20, + )], + non_code_meta.start_nodes, + ); + + assert_eq!( + Some(&vec![ + Node::new( + NonCodeNode { + value: NonCodeValue::InlineComment { + value: "block\n comment".to_owned(), + style: CommentStyle::Block + }, + digest: None, + }, + 60, + 82, + ), + Node::new( + NonCodeNode { + value: NonCodeValue::NewLine, + digest: None, + }, + 82, + 86, + ) ]), non_code_meta.non_code_nodes.get(&0), ); + assert_eq!( - Some(&vec![NonCodeNode { - start: 103, - end: 129, - value: NonCodeValue::BlockComment { - value: "this is also a comment".to_owned(), - style: CommentStyle::Line + Some(&vec![Node::new( + NonCodeNode { + value: NonCodeValue::BlockComment { + value: "this is also a comment".to_owned(), + style: CommentStyle::Line + }, + digest: None, }, - digest: None, - }]), + 103, + 129, + )]), non_code_meta.non_code_nodes.get(&1), ); } @@ -2277,20 +2351,17 @@ const mySk1 = startSketchAt([0, 0])"#; // The RHS should be a binary expression. let actual = binary_expression.parse(&tokens).unwrap(); assert_eq!(actual.operator, BinaryOperator::Mul); - let BinaryPart::BinaryExpression(rhs) = actual.right else { + let BinaryPart::BinaryExpression(rhs) = actual.inner.right else { panic!("Expected RHS to be another binary expression"); }; assert_eq!(rhs.operator, BinaryOperator::Sub); - assert_eq!( - rhs.right, - BinaryPart::Literal(Box::new(Literal { - start: 9, - end: 10, - value: 3u32.into(), - raw: "3".to_owned(), - digest: None, - })) - ); + match &rhs.right { + BinaryPart::Literal(lit) => { + assert!(lit.start == 9 && lit.end == 10); + assert!(lit.value == 3u32.into() && &lit.raw == "3" && lit.digest.is_none()); + } + _ => panic!(), + } } #[test] @@ -2309,7 +2380,7 @@ const mySk1 = startSketchAt([0, 0])"#; Err(e) => panic!("Could not parse test {i}: {e:#?}"), Ok(a) => a, }; - let Expr::BinaryExpression(_expr) = actual.declarations.remove(0).init else { + let Expr::BinaryExpression(_expr) = actual.declarations.remove(0).inner.init else { panic!( "Expected test {i} to be a binary expression but it wasn't, it was {:?}", actual.declarations[0] @@ -2337,12 +2408,12 @@ const mySk1 = startSketchAt([0, 0])"#; // The RHS should be a binary expression. let outer = binary_expression.parse(&tokens).unwrap(); assert_eq!(outer.operator, BinaryOperator::Mul); - let BinaryPart::BinaryExpression(middle) = outer.right else { + let BinaryPart::BinaryExpression(middle) = outer.inner.right else { panic!("Expected RHS to be another binary expression"); }; assert_eq!(middle.operator, BinaryOperator::Div); - let BinaryPart::BinaryExpression(inner) = middle.left else { + let BinaryPart::BinaryExpression(inner) = middle.inner.left else { panic!("expected nested binary expression"); }; assert_eq!(inner.operator, BinaryOperator::Sub); @@ -2355,11 +2426,11 @@ const mySk1 = startSketchAt([0, 0])"#; let tokens = crate::token::lexer(test).unwrap(); let actual = binary_expression.parse(&tokens).unwrap(); assert_eq!(actual.operator, BinaryOperator::Sub); - let BinaryPart::Literal(left) = actual.left else { + let BinaryPart::Literal(left) = actual.inner.left else { panic!("should be expression"); }; assert_eq!(left.value, 1u32.into()); - let BinaryPart::Literal(right) = actual.right else { + let BinaryPart::Literal(right) = actual.inner.right else { panic!("should be expression"); }; assert_eq!(right.value, 2u32.into()); @@ -2415,107 +2486,123 @@ const mySk1 = startSketchAt([0, 0])"#; for (i, (test_program, expected)) in [ ( "//hi", - NonCodeNode { - start: 0, - end: 4, - value: NonCodeValue::BlockComment { - value: "hi".to_owned(), - style: CommentStyle::Line, + Node::new( + NonCodeNode { + value: NonCodeValue::BlockComment { + value: "hi".to_owned(), + style: CommentStyle::Line, + }, + digest: None, }, - digest: None, - }, + 0, + 4, + ), ), ( "/*hello*/", - NonCodeNode { - start: 0, - end: 9, - value: NonCodeValue::BlockComment { - value: "hello".to_owned(), - style: CommentStyle::Block, + Node::new( + NonCodeNode { + value: NonCodeValue::BlockComment { + value: "hello".to_owned(), + style: CommentStyle::Block, + }, + digest: None, }, - digest: None, - }, + 0, + 9, + ), ), ( "/* hello */", - NonCodeNode { - start: 0, - end: 11, - value: NonCodeValue::BlockComment { - value: "hello".to_owned(), - style: CommentStyle::Block, + Node::new( + NonCodeNode { + value: NonCodeValue::BlockComment { + value: "hello".to_owned(), + style: CommentStyle::Block, + }, + digest: None, }, - digest: None, - }, + 0, + 11, + ), ), ( "/* \nhello */", - NonCodeNode { - start: 0, - end: 12, - value: NonCodeValue::BlockComment { - value: "hello".to_owned(), - style: CommentStyle::Block, + Node::new( + NonCodeNode { + value: NonCodeValue::BlockComment { + value: "hello".to_owned(), + style: CommentStyle::Block, + }, + digest: None, }, - digest: None, - }, + 0, + 12, + ), ), ( " /* hello */", - NonCodeNode { - start: 0, - end: 29, - value: NonCodeValue::BlockComment { - value: "hello".to_owned(), - style: CommentStyle::Block, + Node::new( + NonCodeNode { + value: NonCodeValue::BlockComment { + value: "hello".to_owned(), + style: CommentStyle::Block, + }, + digest: None, }, - digest: None, - }, + 0, + 29, + ), ), ( // Empty line with trailing whitespace " /* hello */", - NonCodeNode { - start: 0, - end: 32, - value: NonCodeValue::NewLineBlockComment { - value: "hello".to_owned(), - style: CommentStyle::Block, + Node::new( + NonCodeNode { + value: NonCodeValue::NewLineBlockComment { + value: "hello".to_owned(), + style: CommentStyle::Block, + }, + digest: None, }, - digest: None, - }, + 0, + 32, + ), ), ( // Empty line, no trailing whitespace " /* hello */", - NonCodeNode { - start: 0, - end: 30, - value: NonCodeValue::NewLineBlockComment { - value: "hello".to_owned(), - style: CommentStyle::Block, + Node::new( + NonCodeNode { + value: NonCodeValue::NewLineBlockComment { + value: "hello".to_owned(), + style: CommentStyle::Block, + }, + digest: None, }, - digest: None, - }, + 0, + 30, + ), ), ( r#"/* block comment */"#, - NonCodeNode { - start: 0, - end: 39, - value: NonCodeValue::BlockComment { - value: "block\n comment".to_owned(), - style: CommentStyle::Block, + Node::new( + NonCodeNode { + value: NonCodeValue::BlockComment { + value: "block\n comment".to_owned(), + style: CommentStyle::Block, + }, + digest: None, }, - digest: None, - }, + 0, + 39, + ), ), ] .into_iter() @@ -2599,7 +2686,7 @@ const mySk1 = startSketchAt([0, 0])"#; let tokens = crate::token::lexer(input).unwrap(); let actual = parameters.parse(&tokens); assert!(actual.is_ok(), "could not parse test {i}"); - let actual_ids: Vec<_> = actual.unwrap().into_iter().map(|p| p.identifier.name).collect(); + let actual_ids: Vec<_> = actual.unwrap().into_iter().map(|p| p.identifier.inner.name).collect(); assert_eq!(actual_ids, expected); } } @@ -2621,7 +2708,7 @@ const mySk1 = startSketchAt([0, 0])"#; for test in tests { // Run the original parser let tokens = crate::token::lexer(test).unwrap(); - let mut expected_body = crate::parser::Parser::new(tokens.clone()).ast().unwrap().body; + let mut expected_body = crate::parser::Parser::new(tokens.clone()).ast().unwrap().inner.body; assert_eq!(expected_body.len(), 1); let BodyItem::VariableDeclaration(expected) = expected_body.pop().unwrap() else { panic!("Expected variable declaration"); @@ -2632,12 +2719,12 @@ const mySk1 = startSketchAt([0, 0])"#; assert_eq!(expected, actual); // Inspect its output in more detail. - assert_eq!(actual.kind, VariableKind::Const); + assert_eq!(actual.inner.kind, VariableKind::Const); assert_eq!(actual.start, 0); assert_eq!(actual.declarations.len(), 1); let decl = actual.declarations.pop().unwrap(); assert_eq!(decl.id.name, "myVar"); - let Expr::Literal(value) = decl.init else { + let Expr::Literal(value) = decl.inner.init else { panic!("value should be a literal") }; assert_eq!(value.end, test.len()); @@ -2648,33 +2735,41 @@ const mySk1 = startSketchAt([0, 0])"#; #[test] fn test_math_parse() { let tokens = crate::token::lexer(r#"5 + "a""#).unwrap(); - let actual = crate::parser::Parser::new(tokens).ast().unwrap().body; - let expr = BinaryExpression { - start: 0, - end: 7, - operator: BinaryOperator::Add, - left: BinaryPart::Literal(Box::new(Literal { - start: 0, - end: 1, - value: 5u32.into(), - raw: "5".to_owned(), + let actual = crate::parser::Parser::new(tokens).ast().unwrap().inner.body; + let expr = Node::boxed( + BinaryExpression { + operator: BinaryOperator::Add, + left: BinaryPart::Literal(Box::new(Node::new( + Literal { + value: 5u32.into(), + raw: "5".to_owned(), + digest: None, + }, + 0, + 1, + ))), + right: BinaryPart::Literal(Box::new(Node::new( + Literal { + value: "a".into(), + raw: r#""a""#.to_owned(), + digest: None, + }, + 4, + 7, + ))), digest: None, - })), - right: BinaryPart::Literal(Box::new(Literal { - start: 4, - end: 7, - value: "a".into(), - raw: r#""a""#.to_owned(), + }, + 0, + 7, + ); + let expected = vec![BodyItem::ExpressionStatement(Node::new( + ExpressionStatement { + expression: Expr::BinaryExpression(expr), digest: None, - })), - digest: None, - }; - let expected = vec![BodyItem::ExpressionStatement(ExpressionStatement { - start: 0, - end: 7, - expression: Expr::BinaryExpression(Box::new(expr)), - digest: None, - })]; + }, + 0, + 7, + ))]; assert_eq!(expected, actual); } @@ -2761,37 +2856,47 @@ const mySk1 = startSketchAt([0, 0])"#; let code = "5 +6"; let parser = crate::parser::Parser::new(crate::token::lexer(code).unwrap()); let result = parser.ast().unwrap(); - let expected_result = Program { - start: 0, - end: 4, - body: vec![BodyItem::ExpressionStatement(ExpressionStatement { - start: 0, - end: 4, - expression: Expr::BinaryExpression(Box::new(BinaryExpression { - start: 0, - end: 4, - left: BinaryPart::Literal(Box::new(Literal { - start: 0, - end: 1, - value: 5u32.into(), - raw: "5".to_string(), + let expected_result = Node::new( + Program { + body: vec![BodyItem::ExpressionStatement(Node::new( + ExpressionStatement { + expression: Expr::BinaryExpression(Node::boxed( + BinaryExpression { + left: BinaryPart::Literal(Box::new(Node::new( + Literal { + value: 5u32.into(), + raw: "5".to_string(), + digest: None, + }, + 0, + 1, + ))), + operator: BinaryOperator::Add, + right: BinaryPart::Literal(Box::new(Node::new( + Literal { + value: 6u32.into(), + raw: "6".to_string(), + digest: None, + }, + 3, + 4, + ))), + digest: None, + }, + 0, + 4, + )), digest: None, - })), - operator: BinaryOperator::Add, - right: BinaryPart::Literal(Box::new(Literal { - start: 3, - end: 4, - value: 6u32.into(), - raw: "6".to_string(), - digest: None, - })), - digest: None, - })), + }, + 0, + 4, + ))], + non_code_meta: NonCodeMeta::default(), digest: None, - })], - non_code_meta: NonCodeMeta::default(), - digest: None, - }; + }, + 0, + 4, + ); assert_eq!(result, expected_result); } @@ -3069,12 +3174,10 @@ e for (i, (params, expect_ok)) in [ ( vec![Parameter { - identifier: Identifier { - start: 0, - end: 0, + identifier: Node::no_src(Identifier { name: "a".to_owned(), digest: None, - }, + }), type_: None, optional: true, digest: None, @@ -3083,12 +3186,10 @@ e ), ( vec![Parameter { - identifier: Identifier { - start: 0, - end: 0, + identifier: Node::no_src(Identifier { name: "a".to_owned(), digest: None, - }, + }), type_: None, optional: false, digest: None, @@ -3098,23 +3199,19 @@ e ( vec![ Parameter { - identifier: Identifier { - start: 0, - end: 0, + identifier: Node::no_src(Identifier { name: "a".to_owned(), digest: None, - }, + }), type_: None, optional: false, digest: None, }, Parameter { - identifier: Identifier { - start: 0, - end: 0, + identifier: Node::no_src(Identifier { name: "b".to_owned(), digest: None, - }, + }), type_: None, optional: true, digest: None, @@ -3125,23 +3222,19 @@ e ( vec![ Parameter { - identifier: Identifier { - start: 0, - end: 0, + identifier: Node::no_src(Identifier { name: "a".to_owned(), digest: None, - }, + }), type_: None, optional: true, digest: None, }, Parameter { - identifier: Identifier { - start: 0, - end: 0, + identifier: Node::no_src(Identifier { name: "b".to_owned(), digest: None, - }, + }), type_: None, optional: false, digest: None, diff --git a/src/wasm-lib/kcl/src/parser/snapshots/kcl_lib__parser__parser_impl__snapshot_math_tests__a.snap b/src/wasm-lib/kcl/src/parser/snapshots/kcl_lib__parser__parser_impl__snapshot_math_tests__a.snap index f4d3f410b..f30645a1c 100644 --- a/src/wasm-lib/kcl/src/parser/snapshots/kcl_lib__parser__parser_impl__snapshot_math_tests__a.snap +++ b/src/wasm-lib/kcl/src/parser/snapshots/kcl_lib__parser__parser_impl__snapshot_math_tests__a.snap @@ -4,23 +4,23 @@ expression: actual --- { "type": "BinaryExpression", - "start": 0, - "end": 5, "operator": "+", "left": { "type": "Literal", "type": "Literal", - "start": 0, - "end": 1, "value": 1, - "raw": "1" + "raw": "1", + "start": 0, + "end": 1 }, "right": { "type": "Literal", "type": "Literal", - "start": 4, - "end": 5, "value": 2, - "raw": "2" - } + "raw": "2", + "start": 4, + "end": 5 + }, + "start": 0, + "end": 5 } diff --git a/src/wasm-lib/kcl/src/parser/snapshots/kcl_lib__parser__parser_impl__snapshot_math_tests__b.snap b/src/wasm-lib/kcl/src/parser/snapshots/kcl_lib__parser__parser_impl__snapshot_math_tests__b.snap index d76a13faa..bffcf481b 100644 --- a/src/wasm-lib/kcl/src/parser/snapshots/kcl_lib__parser__parser_impl__snapshot_math_tests__b.snap +++ b/src/wasm-lib/kcl/src/parser/snapshots/kcl_lib__parser__parser_impl__snapshot_math_tests__b.snap @@ -4,23 +4,23 @@ expression: actual --- { "type": "BinaryExpression", - "start": 0, - "end": 3, "operator": "+", "left": { "type": "Literal", "type": "Literal", - "start": 0, - "end": 1, "value": 1, - "raw": "1" + "raw": "1", + "start": 0, + "end": 1 }, "right": { "type": "Literal", "type": "Literal", - "start": 2, - "end": 3, "value": 2, - "raw": "2" - } + "raw": "2", + "start": 2, + "end": 3 + }, + "start": 0, + "end": 3 } diff --git a/src/wasm-lib/kcl/src/parser/snapshots/kcl_lib__parser__parser_impl__snapshot_math_tests__c.snap b/src/wasm-lib/kcl/src/parser/snapshots/kcl_lib__parser__parser_impl__snapshot_math_tests__c.snap index 53ae57d2d..9cc43dfca 100644 --- a/src/wasm-lib/kcl/src/parser/snapshots/kcl_lib__parser__parser_impl__snapshot_math_tests__c.snap +++ b/src/wasm-lib/kcl/src/parser/snapshots/kcl_lib__parser__parser_impl__snapshot_math_tests__c.snap @@ -4,23 +4,23 @@ expression: actual --- { "type": "BinaryExpression", - "start": 0, - "end": 4, "operator": "-", "left": { "type": "Literal", "type": "Literal", - "start": 0, - "end": 1, "value": 1, - "raw": "1" + "raw": "1", + "start": 0, + "end": 1 }, "right": { "type": "Literal", "type": "Literal", - "start": 3, - "end": 4, "value": 2, - "raw": "2" - } + "raw": "2", + "start": 3, + "end": 4 + }, + "start": 0, + "end": 4 } diff --git a/src/wasm-lib/kcl/src/parser/snapshots/kcl_lib__parser__parser_impl__snapshot_math_tests__d.snap b/src/wasm-lib/kcl/src/parser/snapshots/kcl_lib__parser__parser_impl__snapshot_math_tests__d.snap index 3421b79f1..283ec78bf 100644 --- a/src/wasm-lib/kcl/src/parser/snapshots/kcl_lib__parser__parser_impl__snapshot_math_tests__d.snap +++ b/src/wasm-lib/kcl/src/parser/snapshots/kcl_lib__parser__parser_impl__snapshot_math_tests__d.snap @@ -4,38 +4,38 @@ expression: actual --- { "type": "BinaryExpression", - "start": 0, - "end": 9, "operator": "+", "left": { "type": "Literal", "type": "Literal", - "start": 0, - "end": 1, "value": 1, - "raw": "1" + "raw": "1", + "start": 0, + "end": 1 }, "right": { "type": "BinaryExpression", "type": "BinaryExpression", - "start": 4, - "end": 9, "operator": "*", "left": { "type": "Literal", "type": "Literal", - "start": 4, - "end": 5, "value": 2, - "raw": "2" + "raw": "2", + "start": 4, + "end": 5 }, "right": { "type": "Literal", "type": "Literal", - "start": 8, - "end": 9, "value": 3, - "raw": "3" - } - } + "raw": "3", + "start": 8, + "end": 9 + }, + "start": 4, + "end": 9 + }, + "start": 0, + "end": 9 } diff --git a/src/wasm-lib/kcl/src/parser/snapshots/kcl_lib__parser__parser_impl__snapshot_math_tests__e.snap b/src/wasm-lib/kcl/src/parser/snapshots/kcl_lib__parser__parser_impl__snapshot_math_tests__e.snap index 52118eaba..c83a2eebe 100644 --- a/src/wasm-lib/kcl/src/parser/snapshots/kcl_lib__parser__parser_impl__snapshot_math_tests__e.snap +++ b/src/wasm-lib/kcl/src/parser/snapshots/kcl_lib__parser__parser_impl__snapshot_math_tests__e.snap @@ -4,38 +4,38 @@ expression: actual --- { "type": "BinaryExpression", - "start": 0, - "end": 11, "operator": "*", "left": { "type": "Literal", "type": "Literal", - "start": 0, - "end": 1, "value": 1, - "raw": "1" + "raw": "1", + "start": 0, + "end": 1 }, "right": { "type": "BinaryExpression", "type": "BinaryExpression", - "start": 6, - "end": 11, "operator": "+", "left": { "type": "Literal", "type": "Literal", - "start": 6, - "end": 7, "value": 2, - "raw": "2" + "raw": "2", + "start": 6, + "end": 7 }, "right": { "type": "Literal", "type": "Literal", - "start": 10, - "end": 11, "value": 3, - "raw": "3" - } - } + "raw": "3", + "start": 10, + "end": 11 + }, + "start": 6, + "end": 11 + }, + "start": 0, + "end": 11 } diff --git a/src/wasm-lib/kcl/src/parser/snapshots/kcl_lib__parser__parser_impl__snapshot_math_tests__f.snap b/src/wasm-lib/kcl/src/parser/snapshots/kcl_lib__parser__parser_impl__snapshot_math_tests__f.snap index 1cc881d04..3baab161c 100644 --- a/src/wasm-lib/kcl/src/parser/snapshots/kcl_lib__parser__parser_impl__snapshot_math_tests__f.snap +++ b/src/wasm-lib/kcl/src/parser/snapshots/kcl_lib__parser__parser_impl__snapshot_math_tests__f.snap @@ -4,53 +4,53 @@ expression: actual --- { "type": "BinaryExpression", - "start": 0, - "end": 17, "operator": "/", "left": { "type": "BinaryExpression", "type": "BinaryExpression", - "start": 0, - "end": 11, "operator": "*", "left": { "type": "Literal", "type": "Literal", - "start": 0, - "end": 1, "value": 1, - "raw": "1" + "raw": "1", + "start": 0, + "end": 1 }, "right": { "type": "BinaryExpression", "type": "BinaryExpression", - "start": 6, - "end": 11, "operator": "+", "left": { "type": "Literal", "type": "Literal", - "start": 6, - "end": 7, "value": 2, - "raw": "2" + "raw": "2", + "start": 6, + "end": 7 }, "right": { "type": "Literal", "type": "Literal", - "start": 10, - "end": 11, "value": 3, - "raw": "3" - } - } + "raw": "3", + "start": 10, + "end": 11 + }, + "start": 6, + "end": 11 + }, + "start": 0, + "end": 11 }, "right": { "type": "Literal", "type": "Literal", - "start": 16, - "end": 17, "value": 4, - "raw": "4" - } + "raw": "4", + "start": 16, + "end": 17 + }, + "start": 0, + "end": 17 } diff --git a/src/wasm-lib/kcl/src/parser/snapshots/kcl_lib__parser__parser_impl__snapshot_math_tests__g.snap b/src/wasm-lib/kcl/src/parser/snapshots/kcl_lib__parser__parser_impl__snapshot_math_tests__g.snap index 1d6cd97be..46150903d 100644 --- a/src/wasm-lib/kcl/src/parser/snapshots/kcl_lib__parser__parser_impl__snapshot_math_tests__g.snap +++ b/src/wasm-lib/kcl/src/parser/snapshots/kcl_lib__parser__parser_impl__snapshot_math_tests__g.snap @@ -4,53 +4,53 @@ expression: actual --- { "type": "BinaryExpression", - "start": 0, - "end": 17, "operator": "+", "left": { "type": "Literal", "type": "Literal", - "start": 0, - "end": 1, "value": 1, - "raw": "1" + "raw": "1", + "start": 0, + "end": 1 }, "right": { "type": "BinaryExpression", "type": "BinaryExpression", - "start": 6, - "end": 17, "operator": "/", "left": { "type": "BinaryExpression", "type": "BinaryExpression", - "start": 6, - "end": 11, "operator": "+", "left": { "type": "Literal", "type": "Literal", - "start": 6, - "end": 7, "value": 2, - "raw": "2" + "raw": "2", + "start": 6, + "end": 7 }, "right": { "type": "Literal", "type": "Literal", - "start": 10, - "end": 11, "value": 3, - "raw": "3" - } + "raw": "3", + "start": 10, + "end": 11 + }, + "start": 6, + "end": 11 }, "right": { "type": "Literal", "type": "Literal", - "start": 16, - "end": 17, "value": 4, - "raw": "4" - } - } + "raw": "4", + "start": 16, + "end": 17 + }, + "start": 6, + "end": 17 + }, + "start": 0, + "end": 17 } diff --git a/src/wasm-lib/kcl/src/parser/snapshots/kcl_lib__parser__parser_impl__snapshot_math_tests__h.snap b/src/wasm-lib/kcl/src/parser/snapshots/kcl_lib__parser__parser_impl__snapshot_math_tests__h.snap index 055108a9b..76742272b 100644 --- a/src/wasm-lib/kcl/src/parser/snapshots/kcl_lib__parser__parser_impl__snapshot_math_tests__h.snap +++ b/src/wasm-lib/kcl/src/parser/snapshots/kcl_lib__parser__parser_impl__snapshot_math_tests__h.snap @@ -4,68 +4,68 @@ expression: actual --- { "type": "BinaryExpression", - "start": 0, - "end": 22, "operator": "*", "left": { "type": "Literal", "type": "Literal", - "start": 0, - "end": 1, "value": 1, - "raw": "1" + "raw": "1", + "start": 0, + "end": 1 }, "right": { "type": "BinaryExpression", "type": "BinaryExpression", - "start": 7, - "end": 22, "operator": "+", "left": { "type": "BinaryExpression", "type": "BinaryExpression", - "start": 7, - "end": 18, "operator": "/", "left": { "type": "BinaryExpression", "type": "BinaryExpression", - "start": 7, - "end": 12, "operator": "+", "left": { "type": "Literal", "type": "Literal", - "start": 7, - "end": 8, "value": 2, - "raw": "2" + "raw": "2", + "start": 7, + "end": 8 }, "right": { "type": "Literal", "type": "Literal", - "start": 11, - "end": 12, "value": 3, - "raw": "3" - } + "raw": "3", + "start": 11, + "end": 12 + }, + "start": 7, + "end": 12 }, "right": { "type": "Literal", "type": "Literal", - "start": 17, - "end": 18, "value": 4, - "raw": "4" - } + "raw": "4", + "start": 17, + "end": 18 + }, + "start": 7, + "end": 18 }, "right": { "type": "Literal", "type": "Literal", - "start": 21, - "end": 22, "value": 5, - "raw": "5" - } - } + "raw": "5", + "start": 21, + "end": 22 + }, + "start": 7, + "end": 22 + }, + "start": 0, + "end": 22 } diff --git a/src/wasm-lib/kcl/src/parser/snapshots/kcl_lib__parser__parser_impl__snapshot_math_tests__i.snap b/src/wasm-lib/kcl/src/parser/snapshots/kcl_lib__parser__parser_impl__snapshot_math_tests__i.snap index 0027ba4fd..42083c553 100644 --- a/src/wasm-lib/kcl/src/parser/snapshots/kcl_lib__parser__parser_impl__snapshot_math_tests__i.snap +++ b/src/wasm-lib/kcl/src/parser/snapshots/kcl_lib__parser__parser_impl__snapshot_math_tests__i.snap @@ -4,38 +4,38 @@ expression: actual --- { "type": "BinaryExpression", - "start": 0, - "end": 13, "operator": "*", "left": { "type": "Literal", "type": "Literal", - "start": 0, - "end": 1, "value": 1, - "raw": "1" + "raw": "1", + "start": 0, + "end": 1 }, "right": { "type": "BinaryExpression", "type": "BinaryExpression", - "start": 8, - "end": 13, "operator": "+", "left": { "type": "Literal", "type": "Literal", - "start": 8, - "end": 9, "value": 2, - "raw": "2" + "raw": "2", + "start": 8, + "end": 9 }, "right": { "type": "Literal", "type": "Literal", - "start": 12, - "end": 13, "value": 3, - "raw": "3" - } - } + "raw": "3", + "start": 12, + "end": 13 + }, + "start": 8, + "end": 13 + }, + "start": 0, + "end": 13 } diff --git a/src/wasm-lib/kcl/src/parser/snapshots/kcl_lib__parser__parser_impl__snapshot_math_tests__j.snap b/src/wasm-lib/kcl/src/parser/snapshots/kcl_lib__parser__parser_impl__snapshot_math_tests__j.snap index a3cbd38bf..4f95eca1e 100644 --- a/src/wasm-lib/kcl/src/parser/snapshots/kcl_lib__parser__parser_impl__snapshot_math_tests__j.snap +++ b/src/wasm-lib/kcl/src/parser/snapshots/kcl_lib__parser__parser_impl__snapshot_math_tests__j.snap @@ -4,78 +4,78 @@ expression: actual --- { "type": "BinaryExpression", - "start": 0, - "end": 44, "operator": "/", "left": { "type": "BinaryExpression", "type": "BinaryExpression", - "start": 0, - "end": 22, "operator": "*", "left": { "type": "BinaryExpression", "type": "BinaryExpression", - "start": 0, - "end": 18, "operator": "*", "left": { "type": "BinaryExpression", "type": "BinaryExpression", - "start": 0, - "end": 12, "operator": "*", "left": { "type": "Identifier", "type": "Identifier", + "name": "distance", "start": 0, - "end": 8, - "name": "distance" + "end": 8 }, "right": { "type": "Identifier", "type": "Identifier", + "name": "p", "start": 11, - "end": 12, - "name": "p" - } + "end": 12 + }, + "start": 0, + "end": 12 }, "right": { "type": "Identifier", "type": "Identifier", + "name": "FOS", "start": 15, - "end": 18, - "name": "FOS" - } + "end": 18 + }, + "start": 0, + "end": 18 }, "right": { "type": "Literal", "type": "Literal", - "start": 21, - "end": 22, "value": 6, - "raw": "6" - } + "raw": "6", + "start": 21, + "end": 22 + }, + "start": 0, + "end": 22 }, "right": { "type": "BinaryExpression", "type": "BinaryExpression", - "start": 26, - "end": 44, "operator": "*", "left": { "type": "Identifier", "type": "Identifier", + "name": "sigmaAllow", "start": 26, - "end": 36, - "name": "sigmaAllow" + "end": 36 }, "right": { "type": "Identifier", "type": "Identifier", + "name": "width", "start": 39, - "end": 44, - "name": "width" - } - } + "end": 44 + }, + "start": 26, + "end": 44 + }, + "start": 0, + "end": 44 } diff --git a/src/wasm-lib/kcl/src/parser/snapshots/kcl_lib__parser__parser_impl__snapshot_math_tests__k.snap b/src/wasm-lib/kcl/src/parser/snapshots/kcl_lib__parser__parser_impl__snapshot_math_tests__k.snap index a9bfe4c77..67132df9b 100644 --- a/src/wasm-lib/kcl/src/parser/snapshots/kcl_lib__parser__parser_impl__snapshot_math_tests__k.snap +++ b/src/wasm-lib/kcl/src/parser/snapshots/kcl_lib__parser__parser_impl__snapshot_math_tests__k.snap @@ -4,23 +4,23 @@ expression: actual --- { "type": "BinaryExpression", - "start": 0, - "end": 8, "operator": "+", "left": { "type": "Literal", "type": "Literal", - "start": 0, - "end": 1, "value": 2, - "raw": "2" + "raw": "2", + "start": 0, + "end": 1 }, "right": { "type": "Literal", "type": "Literal", - "start": 7, - "end": 8, "value": 3, - "raw": "3" - } + "raw": "3", + "start": 7, + "end": 8 + }, + "start": 0, + "end": 8 } diff --git a/src/wasm-lib/kcl/src/parser/snapshots/kcl_lib__parser__parser_impl__snapshot_tests__a.snap b/src/wasm-lib/kcl/src/parser/snapshots/kcl_lib__parser__parser_impl__snapshot_tests__a.snap index b911bab7a..dc9ab6cf0 100644 --- a/src/wasm-lib/kcl/src/parser/snapshots/kcl_lib__parser__parser_impl__snapshot_tests__a.snap +++ b/src/wasm-lib/kcl/src/parser/snapshots/kcl_lib__parser__parser_impl__snapshot_tests__a.snap @@ -3,253 +3,253 @@ source: kcl/src/parser/parser_impl.rs expression: actual --- { - "start": 0, - "end": 144, "body": [ { - "type": "VariableDeclaration", - "type": "VariableDeclaration", - "start": 0, - "end": 143, "declarations": [ { - "type": "VariableDeclarator", - "start": 6, "end": 143, "id": { - "type": "Identifier", - "start": 6, "end": 15, - "name": "boxSketch" + "name": "boxSketch", + "start": 6, + "type": "Identifier" }, "init": { - "type": "PipeExpression", - "type": "PipeExpression", - "start": 18, - "end": 143, "body": [ { - "type": "CallExpression", - "type": "CallExpression", - "start": 18, - "end": 39, - "callee": { - "type": "Identifier", - "start": 18, - "end": 31, - "name": "startSketchAt" - }, "arguments": [ { - "type": "ArrayExpression", - "type": "ArrayExpression", - "start": 32, - "end": 38, "elements": [ { - "type": "Literal", - "type": "Literal", - "start": 33, "end": 34, - "value": 0, - "raw": "0" + "raw": "0", + "start": 33, + "type": "Literal", + "type": "Literal", + "value": 0 }, { - "type": "Literal", - "type": "Literal", - "start": 36, "end": 37, - "value": 0, - "raw": "0" + "raw": "0", + "start": 36, + "type": "Literal", + "type": "Literal", + "value": 0 } - ] + ], + "end": 38, + "start": 32, + "type": "ArrayExpression", + "type": "ArrayExpression" } ], - "optional": false + "callee": { + "end": 31, + "name": "startSketchAt", + "start": 18, + "type": "Identifier" + }, + "end": 39, + "optional": false, + "start": 18, + "type": "CallExpression", + "type": "CallExpression" }, { - "type": "CallExpression", - "type": "CallExpression", - "start": 47, - "end": 63, - "callee": { - "type": "Identifier", - "start": 47, - "end": 51, - "name": "line" - }, "arguments": [ { - "type": "ArrayExpression", - "type": "ArrayExpression", - "start": 52, - "end": 59, "elements": [ { - "type": "Literal", - "type": "Literal", - "start": 53, "end": 54, - "value": 0, - "raw": "0" + "raw": "0", + "start": 53, + "type": "Literal", + "type": "Literal", + "value": 0 }, { - "type": "Literal", - "type": "Literal", - "start": 56, "end": 58, - "value": 10, - "raw": "10" + "raw": "10", + "start": 56, + "type": "Literal", + "type": "Literal", + "value": 10 } - ] + ], + "end": 59, + "start": 52, + "type": "ArrayExpression", + "type": "ArrayExpression" }, { - "type": "PipeSubstitution", - "type": "PipeSubstitution", + "end": 62, "start": 61, - "end": 62 + "type": "PipeSubstitution", + "type": "PipeSubstitution" } ], - "optional": false + "callee": { + "end": 51, + "name": "line", + "start": 47, + "type": "Identifier" + }, + "end": 63, + "optional": false, + "start": 47, + "type": "CallExpression", + "type": "CallExpression" }, { - "type": "CallExpression", - "type": "CallExpression", - "start": 71, - "end": 96, - "callee": { - "type": "Identifier", - "start": 71, - "end": 84, - "name": "tangentialArc" - }, "arguments": [ { - "type": "ArrayExpression", - "type": "ArrayExpression", - "start": 85, - "end": 92, "elements": [ { - "type": "UnaryExpression", - "type": "UnaryExpression", - "start": 86, + "argument": { + "end": 88, + "raw": "5", + "start": 87, + "type": "Literal", + "type": "Literal", + "value": 5 + }, "end": 88, "operator": "-", - "argument": { - "type": "Literal", - "type": "Literal", - "start": 87, - "end": 88, - "value": 5, - "raw": "5" - } + "start": 86, + "type": "UnaryExpression", + "type": "UnaryExpression" }, { - "type": "Literal", - "type": "Literal", - "start": 90, "end": 91, - "value": 5, - "raw": "5" + "raw": "5", + "start": 90, + "type": "Literal", + "type": "Literal", + "value": 5 } - ] + ], + "end": 92, + "start": 85, + "type": "ArrayExpression", + "type": "ArrayExpression" }, { - "type": "PipeSubstitution", - "type": "PipeSubstitution", + "end": 95, "start": 94, - "end": 95 + "type": "PipeSubstitution", + "type": "PipeSubstitution" } ], - "optional": false + "callee": { + "end": 84, + "name": "tangentialArc", + "start": 71, + "type": "Identifier" + }, + "end": 96, + "optional": false, + "start": 71, + "type": "CallExpression", + "type": "CallExpression" }, { - "type": "CallExpression", - "type": "CallExpression", - "start": 104, - "end": 121, - "callee": { - "type": "Identifier", - "start": 104, - "end": 108, - "name": "line" - }, "arguments": [ { - "type": "ArrayExpression", - "type": "ArrayExpression", - "start": 109, - "end": 117, "elements": [ { - "type": "Literal", - "type": "Literal", - "start": 110, "end": 111, - "value": 5, - "raw": "5" + "raw": "5", + "start": 110, + "type": "Literal", + "type": "Literal", + "value": 5 }, { - "type": "UnaryExpression", - "type": "UnaryExpression", - "start": 113, + "argument": { + "end": 116, + "raw": "15", + "start": 114, + "type": "Literal", + "type": "Literal", + "value": 15 + }, "end": 116, "operator": "-", - "argument": { - "type": "Literal", - "type": "Literal", - "start": 114, - "end": 116, - "value": 15, - "raw": "15" - } + "start": 113, + "type": "UnaryExpression", + "type": "UnaryExpression" } - ] + ], + "end": 117, + "start": 109, + "type": "ArrayExpression", + "type": "ArrayExpression" }, { - "type": "PipeSubstitution", - "type": "PipeSubstitution", + "end": 120, "start": 119, - "end": 120 + "type": "PipeSubstitution", + "type": "PipeSubstitution" } ], - "optional": false + "callee": { + "end": 108, + "name": "line", + "start": 104, + "type": "Identifier" + }, + "end": 121, + "optional": false, + "start": 104, + "type": "CallExpression", + "type": "CallExpression" }, { - "type": "CallExpression", - "type": "CallExpression", - "start": 129, - "end": 143, - "callee": { - "type": "Identifier", - "start": 129, - "end": 136, - "name": "extrude" - }, "arguments": [ { - "type": "Literal", - "type": "Literal", - "start": 137, "end": 139, - "value": 10, - "raw": "10" + "raw": "10", + "start": 137, + "type": "Literal", + "type": "Literal", + "value": 10 }, { - "type": "PipeSubstitution", - "type": "PipeSubstitution", + "end": 142, "start": 141, - "end": 142 + "type": "PipeSubstitution", + "type": "PipeSubstitution" } ], - "optional": false + "callee": { + "end": 136, + "name": "extrude", + "start": 129, + "type": "Identifier" + }, + "end": 143, + "optional": false, + "start": 129, + "type": "CallExpression", + "type": "CallExpression" } - ] - } + ], + "end": 143, + "start": 18, + "type": "PipeExpression", + "type": "PipeExpression" + }, + "start": 6, + "type": "VariableDeclarator" } ], - "kind": "const" + "end": 143, + "kind": "const", + "start": 0, + "type": "VariableDeclaration", + "type": "VariableDeclaration" } - ] + ], + "end": 144, + "start": 0 } diff --git a/src/wasm-lib/kcl/src/parser/snapshots/kcl_lib__parser__parser_impl__snapshot_tests__aa.snap b/src/wasm-lib/kcl/src/parser/snapshots/kcl_lib__parser__parser_impl__snapshot_tests__aa.snap index c3a940d8c..834ec6888 100644 --- a/src/wasm-lib/kcl/src/parser/snapshots/kcl_lib__parser__parser_impl__snapshot_tests__aa.snap +++ b/src/wasm-lib/kcl/src/parser/snapshots/kcl_lib__parser__parser_impl__snapshot_tests__aa.snap @@ -3,42 +3,42 @@ source: kcl/src/parser/parser_impl.rs expression: actual --- { - "start": 0, - "end": 17, "body": [ { - "type": "VariableDeclaration", - "type": "VariableDeclaration", - "start": 0, - "end": 17, "declarations": [ { - "type": "VariableDeclarator", - "start": 6, "end": 17, "id": { - "type": "Identifier", - "start": 6, "end": 8, - "name": "sg" + "name": "sg", + "start": 6, + "type": "Identifier" }, "init": { - "type": "UnaryExpression", - "type": "UnaryExpression", - "start": 11, + "argument": { + "end": 17, + "name": "scale", + "start": 12, + "type": "Identifier", + "type": "Identifier" + }, "end": 17, "operator": "-", - "argument": { - "type": "Identifier", - "type": "Identifier", - "start": 12, - "end": 17, - "name": "scale" - } - } + "start": 11, + "type": "UnaryExpression", + "type": "UnaryExpression" + }, + "start": 6, + "type": "VariableDeclarator" } ], - "kind": "const" + "end": 17, + "kind": "const", + "start": 0, + "type": "VariableDeclaration", + "type": "VariableDeclaration" } - ] + ], + "end": 17, + "start": 0 } diff --git a/src/wasm-lib/kcl/src/parser/snapshots/kcl_lib__parser__parser_impl__snapshot_tests__ab.snap b/src/wasm-lib/kcl/src/parser/snapshots/kcl_lib__parser__parser_impl__snapshot_tests__ab.snap index 545ee7aa6..3f4b17b81 100644 --- a/src/wasm-lib/kcl/src/parser/snapshots/kcl_lib__parser__parser_impl__snapshot_tests__ab.snap +++ b/src/wasm-lib/kcl/src/parser/snapshots/kcl_lib__parser__parser_impl__snapshot_tests__ab.snap @@ -3,79 +3,79 @@ source: kcl/src/parser/parser_impl.rs expression: actual --- { - "start": 0, - "end": 23, "body": [ { - "type": "ExpressionStatement", - "type": "ExpressionStatement", - "start": 0, "end": 23, "expression": { - "type": "CallExpression", - "type": "CallExpression", - "start": 0, - "end": 23, - "callee": { - "type": "Identifier", - "start": 0, - "end": 6, - "name": "lineTo" - }, "arguments": [ { - "type": "ObjectExpression", - "type": "ObjectExpression", - "start": 7, "end": 22, "properties": [ { - "type": "ObjectProperty", - "start": 9, "end": 20, "key": { - "type": "Identifier", - "start": 9, "end": 11, - "name": "to" + "name": "to", + "start": 9, + "type": "Identifier" }, + "start": 9, + "type": "ObjectProperty", "value": { - "type": "ArrayExpression", - "type": "ArrayExpression", - "start": 13, - "end": 20, "elements": [ { - "type": "Literal", - "type": "Literal", - "start": 14, "end": 15, - "value": 0, - "raw": "0" + "raw": "0", + "start": 14, + "type": "Literal", + "type": "Literal", + "value": 0 }, { - "type": "UnaryExpression", - "type": "UnaryExpression", - "start": 17, + "argument": { + "end": 19, + "raw": "1", + "start": 18, + "type": "Literal", + "type": "Literal", + "value": 1 + }, "end": 19, "operator": "-", - "argument": { - "type": "Literal", - "type": "Literal", - "start": 18, - "end": 19, - "value": 1, - "raw": "1" - } + "start": 17, + "type": "UnaryExpression", + "type": "UnaryExpression" } - ] + ], + "end": 20, + "start": 13, + "type": "ArrayExpression", + "type": "ArrayExpression" } } - ] + ], + "start": 7, + "type": "ObjectExpression", + "type": "ObjectExpression" } ], - "optional": false - } + "callee": { + "end": 6, + "name": "lineTo", + "start": 0, + "type": "Identifier" + }, + "end": 23, + "optional": false, + "start": 0, + "type": "CallExpression", + "type": "CallExpression" + }, + "start": 0, + "type": "ExpressionStatement", + "type": "ExpressionStatement" } - ] + ], + "end": 23, + "start": 0 } diff --git a/src/wasm-lib/kcl/src/parser/snapshots/kcl_lib__parser__parser_impl__snapshot_tests__ac.snap b/src/wasm-lib/kcl/src/parser/snapshots/kcl_lib__parser__parser_impl__snapshot_tests__ac.snap index c10a50947..8832057be 100644 --- a/src/wasm-lib/kcl/src/parser/snapshots/kcl_lib__parser__parser_impl__snapshot_tests__ac.snap +++ b/src/wasm-lib/kcl/src/parser/snapshots/kcl_lib__parser__parser_impl__snapshot_tests__ac.snap @@ -3,51 +3,51 @@ source: kcl/src/parser/parser_impl.rs expression: actual --- { - "start": 0, - "end": 23, "body": [ { - "type": "VariableDeclaration", - "type": "VariableDeclaration", - "start": 0, - "end": 23, "declarations": [ { - "type": "VariableDeclarator", - "start": 6, "end": 23, "id": { - "type": "Identifier", - "start": 6, "end": 13, - "name": "myArray" + "name": "myArray", + "start": 6, + "type": "Identifier" }, "init": { - "type": "ArrayRangeExpression", - "type": "ArrayRangeExpression", - "start": 16, "end": 23, - "startElement": { - "type": "Literal", - "type": "Literal", - "start": 17, - "end": 18, - "value": 0, - "raw": "0" - }, "endElement": { - "type": "Literal", - "type": "Literal", - "start": 20, "end": 22, - "value": 10, - "raw": "10" + "raw": "10", + "start": 20, + "type": "Literal", + "type": "Literal", + "value": 10 }, - "endInclusive": true - } + "endInclusive": true, + "start": 16, + "startElement": { + "end": 18, + "raw": "0", + "start": 17, + "type": "Literal", + "type": "Literal", + "value": 0 + }, + "type": "ArrayRangeExpression", + "type": "ArrayRangeExpression" + }, + "start": 6, + "type": "VariableDeclarator" } ], - "kind": "const" + "end": 23, + "kind": "const", + "start": 0, + "type": "VariableDeclaration", + "type": "VariableDeclaration" } - ] + ], + "end": 23, + "start": 0 } diff --git a/src/wasm-lib/kcl/src/parser/snapshots/kcl_lib__parser__parser_impl__snapshot_tests__ad.snap b/src/wasm-lib/kcl/src/parser/snapshots/kcl_lib__parser__parser_impl__snapshot_tests__ad.snap index 00aa97086..e5ad22512 100644 --- a/src/wasm-lib/kcl/src/parser/snapshots/kcl_lib__parser__parser_impl__snapshot_tests__ad.snap +++ b/src/wasm-lib/kcl/src/parser/snapshots/kcl_lib__parser__parser_impl__snapshot_tests__ad.snap @@ -3,75 +3,75 @@ source: kcl/src/parser/parser_impl.rs expression: actual --- { - "start": 0, - "end": 80, "body": [ { - "type": "VariableDeclaration", - "type": "VariableDeclaration", - "start": 5, - "end": 57, "declarations": [ { - "type": "VariableDeclarator", - "start": 8, "end": 57, "id": { - "type": "Identifier", - "start": 8, "end": 24, - "name": "firstPrimeNumber" + "name": "firstPrimeNumber", + "start": 8, + "type": "Identifier" }, "init": { - "type": "FunctionExpression", - "type": "FunctionExpression", - "start": 27, - "end": 57, - "params": [], "body": { - "start": 33, - "end": 57, "body": [ { - "type": "ReturnStatement", - "type": "ReturnStatement", - "start": 43, - "end": 51, "argument": { - "type": "Literal", - "type": "Literal", - "start": 50, "end": 51, - "value": 2, - "raw": "2" - } + "raw": "2", + "start": 50, + "type": "Literal", + "type": "Literal", + "value": 2 + }, + "end": 51, + "start": 43, + "type": "ReturnStatement", + "type": "ReturnStatement" } - ] - } - } + ], + "end": 57, + "start": 33 + }, + "end": 57, + "params": [], + "start": 27, + "type": "FunctionExpression", + "type": "FunctionExpression" + }, + "start": 8, + "type": "VariableDeclarator" } ], - "kind": "fn" + "end": 57, + "kind": "fn", + "start": 5, + "type": "VariableDeclaration", + "type": "VariableDeclaration" }, { - "type": "ExpressionStatement", - "type": "ExpressionStatement", - "start": 62, "end": 80, "expression": { - "type": "CallExpression", - "type": "CallExpression", - "start": 62, - "end": 80, - "callee": { - "type": "Identifier", - "start": 62, - "end": 78, - "name": "firstPrimeNumber" - }, "arguments": [], - "optional": false - } + "callee": { + "end": 78, + "name": "firstPrimeNumber", + "start": 62, + "type": "Identifier" + }, + "end": 80, + "optional": false, + "start": 62, + "type": "CallExpression", + "type": "CallExpression" + }, + "start": 62, + "type": "ExpressionStatement", + "type": "ExpressionStatement" } - ] + ], + "end": 80, + "start": 0 } diff --git a/src/wasm-lib/kcl/src/parser/snapshots/kcl_lib__parser__parser_impl__snapshot_tests__ae.snap b/src/wasm-lib/kcl/src/parser/snapshots/kcl_lib__parser__parser_impl__snapshot_tests__ae.snap index 9f4006f35..0e3165d34 100644 --- a/src/wasm-lib/kcl/src/parser/snapshots/kcl_lib__parser__parser_impl__snapshot_tests__ae.snap +++ b/src/wasm-lib/kcl/src/parser/snapshots/kcl_lib__parser__parser_impl__snapshot_tests__ae.snap @@ -3,95 +3,95 @@ source: kcl/src/parser/parser_impl.rs expression: actual --- { - "start": 0, - "end": 66, "body": [ { - "type": "VariableDeclaration", - "type": "VariableDeclaration", - "start": 0, - "end": 49, "declarations": [ { - "type": "VariableDeclarator", - "start": 3, "end": 49, "id": { - "type": "Identifier", - "start": 3, "end": 8, - "name": "thing" + "name": "thing", + "start": 3, + "type": "Identifier" }, "init": { - "type": "FunctionExpression", - "type": "FunctionExpression", - "start": 11, + "body": { + "body": [ + { + "argument": { + "end": 43, + "raw": "true", + "start": 39, + "type": "Literal", + "type": "Literal", + "value": true + }, + "end": 43, + "start": 32, + "type": "ReturnStatement", + "type": "ReturnStatement" + } + ], + "end": 49, + "start": 22 + }, "end": 49, "params": [ { "type": "Parameter", "identifier": { - "type": "Identifier", - "start": 12, "end": 17, - "name": "param" + "name": "param", + "start": 12, + "type": "Identifier" }, "optional": false } ], - "body": { - "start": 22, - "end": 49, - "body": [ - { - "type": "ReturnStatement", - "type": "ReturnStatement", - "start": 32, - "end": 43, - "argument": { - "type": "Literal", - "type": "Literal", - "start": 39, - "end": 43, - "value": true, - "raw": "true" - } - } - ] - } - } + "start": 11, + "type": "FunctionExpression", + "type": "FunctionExpression" + }, + "start": 3, + "type": "VariableDeclarator" } ], - "kind": "fn" + "end": 49, + "kind": "fn", + "start": 0, + "type": "VariableDeclaration", + "type": "VariableDeclaration" }, { - "type": "ExpressionStatement", - "type": "ExpressionStatement", - "start": 54, "end": 66, "expression": { - "type": "CallExpression", - "type": "CallExpression", - "start": 54, - "end": 66, - "callee": { - "type": "Identifier", - "start": 54, - "end": 59, - "name": "thing" - }, "arguments": [ { - "type": "Literal", - "type": "Literal", - "start": 60, "end": 65, - "value": false, - "raw": "false" + "raw": "false", + "start": 60, + "type": "Literal", + "type": "Literal", + "value": false } ], - "optional": false - } + "callee": { + "end": 59, + "name": "thing", + "start": 54, + "type": "Identifier" + }, + "end": 66, + "optional": false, + "start": 54, + "type": "CallExpression", + "type": "CallExpression" + }, + "start": 54, + "type": "ExpressionStatement", + "type": "ExpressionStatement" } - ] + ], + "end": 66, + "start": 0 } diff --git a/src/wasm-lib/kcl/src/parser/snapshots/kcl_lib__parser__parser_impl__snapshot_tests__af.snap b/src/wasm-lib/kcl/src/parser/snapshots/kcl_lib__parser__parser_impl__snapshot_tests__af.snap index 7d28c8c5d..4273e1a87 100644 --- a/src/wasm-lib/kcl/src/parser/snapshots/kcl_lib__parser__parser_impl__snapshot_tests__af.snap +++ b/src/wasm-lib/kcl/src/parser/snapshots/kcl_lib__parser__parser_impl__snapshot_tests__af.snap @@ -3,245 +3,245 @@ source: kcl/src/parser/parser_impl.rs expression: actual --- { - "start": 0, - "end": 165, "body": [ { - "type": "VariableDeclaration", - "type": "VariableDeclaration", - "start": 0, - "end": 165, "declarations": [ { - "type": "VariableDeclarator", - "start": 6, "end": 165, "id": { - "type": "Identifier", - "start": 6, "end": 14, - "name": "mySketch" + "name": "mySketch", + "start": 6, + "type": "Identifier" }, "init": { - "type": "PipeExpression", - "type": "PipeExpression", - "start": 17, - "end": 165, "body": [ { - "type": "CallExpression", - "type": "CallExpression", - "start": 17, - "end": 37, - "callee": { - "type": "Identifier", - "start": 17, - "end": 30, - "name": "startSketchAt" - }, "arguments": [ { - "type": "ArrayExpression", - "type": "ArrayExpression", - "start": 31, - "end": 36, "elements": [ { - "type": "Literal", - "type": "Literal", - "start": 32, "end": 33, - "value": 0, - "raw": "0" + "raw": "0", + "start": 32, + "type": "Literal", + "type": "Literal", + "value": 0 }, { - "type": "Literal", - "type": "Literal", - "start": 34, "end": 35, - "value": 0, - "raw": "0" + "raw": "0", + "start": 34, + "type": "Literal", + "type": "Literal", + "value": 0 } - ] + ], + "end": 36, + "start": 31, + "type": "ArrayExpression", + "type": "ArrayExpression" } ], - "optional": false + "callee": { + "end": 30, + "name": "startSketchAt", + "start": 17, + "type": "Identifier" + }, + "end": 37, + "optional": false, + "start": 17, + "type": "CallExpression", + "type": "CallExpression" }, { - "type": "CallExpression", - "type": "CallExpression", - "start": 49, - "end": 75, - "callee": { - "type": "Identifier", - "start": 49, - "end": 55, - "name": "lineTo" - }, "arguments": [ { - "type": "ArrayExpression", - "type": "ArrayExpression", - "start": 56, - "end": 62, "elements": [ { - "type": "Literal", - "type": "Literal", - "start": 57, "end": 58, - "value": 0, - "raw": "0" + "raw": "0", + "start": 57, + "type": "Literal", + "type": "Literal", + "value": 0 }, { - "type": "Literal", - "type": "Literal", - "start": 60, "end": 61, - "value": 1, - "raw": "1" + "raw": "1", + "start": 60, + "type": "Literal", + "type": "Literal", + "value": 1 } - ] + ], + "end": 62, + "start": 56, + "type": "ArrayExpression", + "type": "ArrayExpression" }, { - "type": "PipeSubstitution", - "type": "PipeSubstitution", + "end": 65, "start": 64, - "end": 65 + "type": "PipeSubstitution", + "type": "PipeSubstitution" }, { - "type": "TagDeclarator", - "type": "TagDeclarator", - "start": 67, "end": 74, + "start": 67, + "type": "TagDeclarator", + "type": "TagDeclarator", "value": "myPath" } ], - "optional": false + "callee": { + "end": 55, + "name": "lineTo", + "start": 49, + "type": "Identifier" + }, + "end": 75, + "optional": false, + "start": 49, + "type": "CallExpression", + "type": "CallExpression" }, { - "type": "CallExpression", - "type": "CallExpression", - "start": 87, - "end": 104, - "callee": { - "type": "Identifier", - "start": 87, - "end": 93, - "name": "lineTo" - }, "arguments": [ { - "type": "ArrayExpression", - "type": "ArrayExpression", - "start": 94, - "end": 100, "elements": [ { - "type": "Literal", - "type": "Literal", - "start": 95, "end": 96, - "value": 1, - "raw": "1" + "raw": "1", + "start": 95, + "type": "Literal", + "type": "Literal", + "value": 1 }, { - "type": "Literal", - "type": "Literal", - "start": 98, "end": 99, - "value": 1, - "raw": "1" + "raw": "1", + "start": 98, + "type": "Literal", + "type": "Literal", + "value": 1 } - ] + ], + "end": 100, + "start": 94, + "type": "ArrayExpression", + "type": "ArrayExpression" }, { - "type": "PipeSubstitution", - "type": "PipeSubstitution", + "end": 103, "start": 102, - "end": 103 + "type": "PipeSubstitution", + "type": "PipeSubstitution" } ], - "optional": false + "callee": { + "end": 93, + "name": "lineTo", + "start": 87, + "type": "Identifier" + }, + "end": 104, + "optional": false, + "start": 87, + "type": "CallExpression", + "type": "CallExpression" }, { - "type": "CallExpression", - "type": "CallExpression", - "start": 116, - "end": 145, - "callee": { - "type": "Identifier", - "start": 116, - "end": 122, - "name": "lineTo" - }, "arguments": [ { - "type": "ArrayExpression", - "type": "ArrayExpression", - "start": 123, - "end": 129, "elements": [ { - "type": "Literal", - "type": "Literal", - "start": 124, "end": 125, - "value": 1, - "raw": "1" + "raw": "1", + "start": 124, + "type": "Literal", + "type": "Literal", + "value": 1 }, { - "type": "Literal", - "type": "Literal", - "start": 127, "end": 128, - "value": 0, - "raw": "0" + "raw": "0", + "start": 127, + "type": "Literal", + "type": "Literal", + "value": 0 } - ] + ], + "end": 129, + "start": 123, + "type": "ArrayExpression", + "type": "ArrayExpression" }, { - "type": "PipeSubstitution", - "type": "PipeSubstitution", + "end": 132, "start": 131, - "end": 132 + "type": "PipeSubstitution", + "type": "PipeSubstitution" }, { - "type": "TagDeclarator", - "type": "TagDeclarator", - "start": 134, "end": 144, + "start": 134, + "type": "TagDeclarator", + "type": "TagDeclarator", "value": "rightPath" } ], - "optional": false + "callee": { + "end": 122, + "name": "lineTo", + "start": 116, + "type": "Identifier" + }, + "end": 145, + "optional": false, + "start": 116, + "type": "CallExpression", + "type": "CallExpression" }, { - "type": "CallExpression", - "type": "CallExpression", - "start": 157, - "end": 165, - "callee": { - "type": "Identifier", - "start": 157, - "end": 162, - "name": "close" - }, "arguments": [ { - "type": "PipeSubstitution", - "type": "PipeSubstitution", + "end": 164, "start": 163, - "end": 164 + "type": "PipeSubstitution", + "type": "PipeSubstitution" } ], - "optional": false + "callee": { + "end": 162, + "name": "close", + "start": 157, + "type": "Identifier" + }, + "end": 165, + "optional": false, + "start": 157, + "type": "CallExpression", + "type": "CallExpression" } - ] - } + ], + "end": 165, + "start": 17, + "type": "PipeExpression", + "type": "PipeExpression" + }, + "start": 6, + "type": "VariableDeclarator" } ], - "kind": "const" + "end": 165, + "kind": "const", + "start": 0, + "type": "VariableDeclaration", + "type": "VariableDeclaration" } - ] + ], + "end": 165, + "start": 0 } diff --git a/src/wasm-lib/kcl/src/parser/snapshots/kcl_lib__parser__parser_impl__snapshot_tests__ag.snap b/src/wasm-lib/kcl/src/parser/snapshots/kcl_lib__parser__parser_impl__snapshot_tests__ag.snap index 88393ea4a..7ed185722 100644 --- a/src/wasm-lib/kcl/src/parser/snapshots/kcl_lib__parser__parser_impl__snapshot_tests__ag.snap +++ b/src/wasm-lib/kcl/src/parser/snapshots/kcl_lib__parser__parser_impl__snapshot_tests__ag.snap @@ -3,141 +3,141 @@ source: kcl/src/parser/parser_impl.rs expression: actual --- { - "start": 0, - "end": 70, "body": [ { - "type": "VariableDeclaration", - "type": "VariableDeclaration", - "start": 0, - "end": 70, "declarations": [ { - "type": "VariableDeclarator", - "start": 6, "end": 70, "id": { - "type": "Identifier", - "start": 6, "end": 14, - "name": "mySketch" + "name": "mySketch", + "start": 6, + "type": "Identifier" }, "init": { - "type": "PipeExpression", - "type": "PipeExpression", - "start": 17, - "end": 70, "body": [ { - "type": "CallExpression", - "type": "CallExpression", - "start": 17, - "end": 37, - "callee": { - "type": "Identifier", - "start": 17, - "end": 30, - "name": "startSketchAt" - }, "arguments": [ { - "type": "ArrayExpression", - "type": "ArrayExpression", - "start": 31, - "end": 36, "elements": [ { - "type": "Literal", - "type": "Literal", - "start": 32, "end": 33, - "value": 0, - "raw": "0" + "raw": "0", + "start": 32, + "type": "Literal", + "type": "Literal", + "value": 0 }, { - "type": "Literal", - "type": "Literal", - "start": 34, "end": 35, - "value": 0, - "raw": "0" + "raw": "0", + "start": 34, + "type": "Literal", + "type": "Literal", + "value": 0 } - ] + ], + "end": 36, + "start": 31, + "type": "ArrayExpression", + "type": "ArrayExpression" } ], - "optional": false + "callee": { + "end": 30, + "name": "startSketchAt", + "start": 17, + "type": "Identifier" + }, + "end": 37, + "optional": false, + "start": 17, + "type": "CallExpression", + "type": "CallExpression" }, { - "type": "CallExpression", - "type": "CallExpression", - "start": 41, - "end": 58, - "callee": { - "type": "Identifier", - "start": 41, - "end": 47, - "name": "lineTo" - }, "arguments": [ { - "type": "ArrayExpression", - "type": "ArrayExpression", - "start": 48, - "end": 54, "elements": [ { - "type": "Literal", - "type": "Literal", - "start": 49, "end": 50, - "value": 1, - "raw": "1" + "raw": "1", + "start": 49, + "type": "Literal", + "type": "Literal", + "value": 1 }, { - "type": "Literal", - "type": "Literal", - "start": 52, "end": 53, - "value": 1, - "raw": "1" + "raw": "1", + "start": 52, + "type": "Literal", + "type": "Literal", + "value": 1 } - ] + ], + "end": 54, + "start": 48, + "type": "ArrayExpression", + "type": "ArrayExpression" }, { - "type": "PipeSubstitution", - "type": "PipeSubstitution", + "end": 57, "start": 56, - "end": 57 + "type": "PipeSubstitution", + "type": "PipeSubstitution" } ], - "optional": false + "callee": { + "end": 47, + "name": "lineTo", + "start": 41, + "type": "Identifier" + }, + "end": 58, + "optional": false, + "start": 41, + "type": "CallExpression", + "type": "CallExpression" }, { - "type": "CallExpression", - "type": "CallExpression", - "start": 62, - "end": 70, - "callee": { - "type": "Identifier", - "start": 62, - "end": 67, - "name": "close" - }, "arguments": [ { - "type": "PipeSubstitution", - "type": "PipeSubstitution", + "end": 69, "start": 68, - "end": 69 + "type": "PipeSubstitution", + "type": "PipeSubstitution" } ], - "optional": false + "callee": { + "end": 67, + "name": "close", + "start": 62, + "type": "Identifier" + }, + "end": 70, + "optional": false, + "start": 62, + "type": "CallExpression", + "type": "CallExpression" } - ] - } + ], + "end": 70, + "start": 17, + "type": "PipeExpression", + "type": "PipeExpression" + }, + "start": 6, + "type": "VariableDeclarator" } ], - "kind": "const" + "end": 70, + "kind": "const", + "start": 0, + "type": "VariableDeclaration", + "type": "VariableDeclaration" } - ] + ], + "end": 70, + "start": 0 } diff --git a/src/wasm-lib/kcl/src/parser/snapshots/kcl_lib__parser__parser_impl__snapshot_tests__ah.snap b/src/wasm-lib/kcl/src/parser/snapshots/kcl_lib__parser__parser_impl__snapshot_tests__ah.snap index 75bc946c5..5fa8bf2db 100644 --- a/src/wasm-lib/kcl/src/parser/snapshots/kcl_lib__parser__parser_impl__snapshot_tests__ah.snap +++ b/src/wasm-lib/kcl/src/parser/snapshots/kcl_lib__parser__parser_impl__snapshot_tests__ah.snap @@ -3,50 +3,50 @@ source: kcl/src/parser/parser_impl.rs expression: actual --- { - "start": 0, - "end": 30, "body": [ { - "type": "VariableDeclaration", - "type": "VariableDeclaration", - "start": 0, - "end": 30, "declarations": [ { - "type": "VariableDeclarator", - "start": 6, "end": 30, "id": { - "type": "Identifier", - "start": 6, "end": 11, - "name": "myBox" + "name": "myBox", + "start": 6, + "type": "Identifier" }, "init": { - "type": "CallExpression", - "type": "CallExpression", - "start": 14, - "end": 30, - "callee": { - "type": "Identifier", - "start": 14, - "end": 27, - "name": "startSketchAt" - }, "arguments": [ { - "type": "Identifier", - "type": "Identifier", - "start": 28, "end": 29, - "name": "p" + "name": "p", + "start": 28, + "type": "Identifier", + "type": "Identifier" } ], - "optional": false - } + "callee": { + "end": 27, + "name": "startSketchAt", + "start": 14, + "type": "Identifier" + }, + "end": 30, + "optional": false, + "start": 14, + "type": "CallExpression", + "type": "CallExpression" + }, + "start": 6, + "type": "VariableDeclarator" } ], - "kind": "const" + "end": 30, + "kind": "const", + "start": 0, + "type": "VariableDeclaration", + "type": "VariableDeclaration" } - ] + ], + "end": 30, + "start": 0 } diff --git a/src/wasm-lib/kcl/src/parser/snapshots/kcl_lib__parser__parser_impl__snapshot_tests__ai.snap b/src/wasm-lib/kcl/src/parser/snapshots/kcl_lib__parser__parser_impl__snapshot_tests__ai.snap index 1378bd032..e6ebdbdaf 100644 --- a/src/wasm-lib/kcl/src/parser/snapshots/kcl_lib__parser__parser_impl__snapshot_tests__ai.snap +++ b/src/wasm-lib/kcl/src/parser/snapshots/kcl_lib__parser__parser_impl__snapshot_tests__ai.snap @@ -3,88 +3,88 @@ source: kcl/src/parser/parser_impl.rs expression: actual --- { - "start": 0, - "end": 29, "body": [ { - "type": "VariableDeclaration", - "type": "VariableDeclaration", - "start": 0, - "end": 29, "declarations": [ { - "type": "VariableDeclarator", - "start": 6, "end": 29, "id": { - "type": "Identifier", - "start": 6, "end": 11, - "name": "myBox" + "name": "myBox", + "start": 6, + "type": "Identifier" }, "init": { - "type": "PipeExpression", - "type": "PipeExpression", - "start": 14, - "end": 29, "body": [ { - "type": "CallExpression", - "type": "CallExpression", - "start": 14, - "end": 18, - "callee": { - "type": "Identifier", - "start": 14, - "end": 15, - "name": "f" - }, "arguments": [ { - "type": "Literal", - "type": "Literal", - "start": 16, "end": 17, - "value": 1, - "raw": "1" + "raw": "1", + "start": 16, + "type": "Literal", + "type": "Literal", + "value": 1 } ], - "optional": false + "callee": { + "end": 15, + "name": "f", + "start": 14, + "type": "Identifier" + }, + "end": 18, + "optional": false, + "start": 14, + "type": "CallExpression", + "type": "CallExpression" }, { - "type": "CallExpression", - "type": "CallExpression", - "start": 22, - "end": 29, - "callee": { - "type": "Identifier", - "start": 22, - "end": 23, - "name": "g" - }, "arguments": [ { - "type": "Literal", - "type": "Literal", - "start": 24, "end": 25, - "value": 2, - "raw": "2" + "raw": "2", + "start": 24, + "type": "Literal", + "type": "Literal", + "value": 2 }, { - "type": "PipeSubstitution", - "type": "PipeSubstitution", + "end": 28, "start": 27, - "end": 28 + "type": "PipeSubstitution", + "type": "PipeSubstitution" } ], - "optional": false + "callee": { + "end": 23, + "name": "g", + "start": 22, + "type": "Identifier" + }, + "end": 29, + "optional": false, + "start": 22, + "type": "CallExpression", + "type": "CallExpression" } - ] - } + ], + "end": 29, + "start": 14, + "type": "PipeExpression", + "type": "PipeExpression" + }, + "start": 6, + "type": "VariableDeclarator" } ], - "kind": "const" + "end": 29, + "kind": "const", + "start": 0, + "type": "VariableDeclaration", + "type": "VariableDeclaration" } - ] + ], + "end": 29, + "start": 0 } diff --git a/src/wasm-lib/kcl/src/parser/snapshots/kcl_lib__parser__parser_impl__snapshot_tests__aj.snap b/src/wasm-lib/kcl/src/parser/snapshots/kcl_lib__parser__parser_impl__snapshot_tests__aj.snap index 5e38805db..e8b7a8301 100644 --- a/src/wasm-lib/kcl/src/parser/snapshots/kcl_lib__parser__parser_impl__snapshot_tests__aj.snap +++ b/src/wasm-lib/kcl/src/parser/snapshots/kcl_lib__parser__parser_impl__snapshot_tests__aj.snap @@ -3,102 +3,102 @@ source: kcl/src/parser/parser_impl.rs expression: actual --- { - "start": 0, - "end": 49, "body": [ { - "type": "VariableDeclaration", - "type": "VariableDeclaration", - "start": 0, - "end": 49, "declarations": [ { - "type": "VariableDeclarator", - "start": 6, "end": 49, "id": { - "type": "Identifier", - "start": 6, "end": 11, - "name": "myBox" + "name": "myBox", + "start": 6, + "type": "Identifier" }, "init": { - "type": "PipeExpression", - "type": "PipeExpression", - "start": 14, - "end": 49, "body": [ { - "type": "CallExpression", - "type": "CallExpression", - "start": 14, - "end": 30, - "callee": { - "type": "Identifier", - "start": 14, - "end": 27, - "name": "startSketchAt" - }, "arguments": [ { - "type": "Identifier", - "type": "Identifier", - "start": 28, "end": 29, - "name": "p" + "name": "p", + "start": 28, + "type": "Identifier", + "type": "Identifier" } ], - "optional": false + "callee": { + "end": 27, + "name": "startSketchAt", + "start": 14, + "type": "Identifier" + }, + "end": 30, + "optional": false, + "start": 14, + "type": "CallExpression", + "type": "CallExpression" }, { - "type": "CallExpression", - "type": "CallExpression", - "start": 34, - "end": 49, - "callee": { - "type": "Identifier", - "start": 34, - "end": 38, - "name": "line" - }, "arguments": [ { - "type": "ArrayExpression", - "type": "ArrayExpression", - "start": 39, - "end": 45, "elements": [ { - "type": "Literal", - "type": "Literal", - "start": 40, "end": 41, - "value": 0, - "raw": "0" + "raw": "0", + "start": 40, + "type": "Literal", + "type": "Literal", + "value": 0 }, { - "type": "Identifier", - "type": "Identifier", - "start": 43, "end": 44, - "name": "l" + "name": "l", + "start": 43, + "type": "Identifier", + "type": "Identifier" } - ] + ], + "end": 45, + "start": 39, + "type": "ArrayExpression", + "type": "ArrayExpression" }, { - "type": "PipeSubstitution", - "type": "PipeSubstitution", + "end": 48, "start": 47, - "end": 48 + "type": "PipeSubstitution", + "type": "PipeSubstitution" } ], - "optional": false + "callee": { + "end": 38, + "name": "line", + "start": 34, + "type": "Identifier" + }, + "end": 49, + "optional": false, + "start": 34, + "type": "CallExpression", + "type": "CallExpression" } - ] - } + ], + "end": 49, + "start": 14, + "type": "PipeExpression", + "type": "PipeExpression" + }, + "start": 6, + "type": "VariableDeclarator" } ], - "kind": "const" + "end": 49, + "kind": "const", + "start": 0, + "type": "VariableDeclaration", + "type": "VariableDeclaration" } - ] + ], + "end": 49, + "start": 0 } diff --git a/src/wasm-lib/kcl/src/parser/snapshots/kcl_lib__parser__parser_impl__snapshot_tests__ak.snap b/src/wasm-lib/kcl/src/parser/snapshots/kcl_lib__parser__parser_impl__snapshot_tests__ak.snap index c5137bb08..081fa3c9f 100644 --- a/src/wasm-lib/kcl/src/parser/snapshots/kcl_lib__parser__parser_impl__snapshot_tests__ak.snap +++ b/src/wasm-lib/kcl/src/parser/snapshots/kcl_lib__parser__parser_impl__snapshot_tests__ak.snap @@ -3,72 +3,72 @@ source: kcl/src/parser/parser_impl.rs expression: actual --- { - "start": 0, - "end": 22, "body": [ { - "type": "ExpressionStatement", - "type": "ExpressionStatement", - "start": 0, "end": 22, "expression": { - "type": "CallExpression", - "type": "CallExpression", - "start": 0, - "end": 22, - "callee": { - "type": "Identifier", - "start": 0, - "end": 6, - "name": "lineTo" - }, "arguments": [ { - "type": "ObjectExpression", - "type": "ObjectExpression", - "start": 7, "end": 21, "properties": [ { - "type": "ObjectProperty", - "start": 9, "end": 19, "key": { - "type": "Identifier", - "start": 9, "end": 11, - "name": "to" + "name": "to", + "start": 9, + "type": "Identifier" }, + "start": 9, + "type": "ObjectProperty", "value": { - "type": "ArrayExpression", - "type": "ArrayExpression", - "start": 13, - "end": 19, "elements": [ { - "type": "Literal", - "type": "Literal", - "start": 14, "end": 15, - "value": 0, - "raw": "0" + "raw": "0", + "start": 14, + "type": "Literal", + "type": "Literal", + "value": 0 }, { - "type": "Literal", - "type": "Literal", - "start": 17, "end": 18, - "value": 1, - "raw": "1" + "raw": "1", + "start": 17, + "type": "Literal", + "type": "Literal", + "value": 1 } - ] + ], + "end": 19, + "start": 13, + "type": "ArrayExpression", + "type": "ArrayExpression" } } - ] + ], + "start": 7, + "type": "ObjectExpression", + "type": "ObjectExpression" } ], - "optional": false - } + "callee": { + "end": 6, + "name": "lineTo", + "start": 0, + "type": "Identifier" + }, + "end": 22, + "optional": false, + "start": 0, + "type": "CallExpression", + "type": "CallExpression" + }, + "start": 0, + "type": "ExpressionStatement", + "type": "ExpressionStatement" } - ] + ], + "end": 22, + "start": 0 } diff --git a/src/wasm-lib/kcl/src/parser/snapshots/kcl_lib__parser__parser_impl__snapshot_tests__al.snap b/src/wasm-lib/kcl/src/parser/snapshots/kcl_lib__parser__parser_impl__snapshot_tests__al.snap index 99870608c..4933fbb4c 100644 --- a/src/wasm-lib/kcl/src/parser/snapshots/kcl_lib__parser__parser_impl__snapshot_tests__al.snap +++ b/src/wasm-lib/kcl/src/parser/snapshots/kcl_lib__parser__parser_impl__snapshot_tests__al.snap @@ -3,107 +3,107 @@ source: kcl/src/parser/parser_impl.rs expression: actual --- { - "start": 0, - "end": 36, "body": [ { - "type": "ExpressionStatement", - "type": "ExpressionStatement", - "start": 0, "end": 36, "expression": { - "type": "CallExpression", - "type": "CallExpression", - "start": 0, - "end": 36, - "callee": { - "type": "Identifier", - "start": 0, - "end": 6, - "name": "lineTo" - }, "arguments": [ { - "type": "ObjectExpression", - "type": "ObjectExpression", - "start": 7, "end": 35, "properties": [ { - "type": "ObjectProperty", - "start": 9, "end": 19, "key": { - "type": "Identifier", - "start": 9, "end": 11, - "name": "to" + "name": "to", + "start": 9, + "type": "Identifier" }, + "start": 9, + "type": "ObjectProperty", "value": { - "type": "ArrayExpression", - "type": "ArrayExpression", - "start": 13, - "end": 19, "elements": [ { - "type": "Literal", - "type": "Literal", - "start": 14, "end": 15, - "value": 0, - "raw": "0" + "raw": "0", + "start": 14, + "type": "Literal", + "type": "Literal", + "value": 0 }, { - "type": "Literal", - "type": "Literal", - "start": 17, "end": 18, - "value": 1, - "raw": "1" + "raw": "1", + "start": 17, + "type": "Literal", + "type": "Literal", + "value": 1 } - ] + ], + "end": 19, + "start": 13, + "type": "ArrayExpression", + "type": "ArrayExpression" } }, { - "type": "ObjectProperty", - "start": 21, "end": 33, "key": { - "type": "Identifier", - "start": 21, "end": 25, - "name": "from" + "name": "from", + "start": 21, + "type": "Identifier" }, + "start": 21, + "type": "ObjectProperty", "value": { - "type": "ArrayExpression", - "type": "ArrayExpression", - "start": 27, - "end": 33, "elements": [ { - "type": "Literal", - "type": "Literal", - "start": 28, "end": 29, - "value": 3, - "raw": "3" + "raw": "3", + "start": 28, + "type": "Literal", + "type": "Literal", + "value": 3 }, { - "type": "Literal", - "type": "Literal", - "start": 31, "end": 32, - "value": 3, - "raw": "3" + "raw": "3", + "start": 31, + "type": "Literal", + "type": "Literal", + "value": 3 } - ] + ], + "end": 33, + "start": 27, + "type": "ArrayExpression", + "type": "ArrayExpression" } } - ] + ], + "start": 7, + "type": "ObjectExpression", + "type": "ObjectExpression" } ], - "optional": false - } + "callee": { + "end": 6, + "name": "lineTo", + "start": 0, + "type": "Identifier" + }, + "end": 36, + "optional": false, + "start": 0, + "type": "CallExpression", + "type": "CallExpression" + }, + "start": 0, + "type": "ExpressionStatement", + "type": "ExpressionStatement" } - ] + ], + "end": 36, + "start": 0 } diff --git a/src/wasm-lib/kcl/src/parser/snapshots/kcl_lib__parser__parser_impl__snapshot_tests__am.snap b/src/wasm-lib/kcl/src/parser/snapshots/kcl_lib__parser__parser_impl__snapshot_tests__am.snap index e969ef25e..f7682b4bc 100644 --- a/src/wasm-lib/kcl/src/parser/snapshots/kcl_lib__parser__parser_impl__snapshot_tests__am.snap +++ b/src/wasm-lib/kcl/src/parser/snapshots/kcl_lib__parser__parser_impl__snapshot_tests__am.snap @@ -3,72 +3,72 @@ source: kcl/src/parser/parser_impl.rs expression: actual --- { - "start": 0, - "end": 19, "body": [ { - "type": "ExpressionStatement", - "type": "ExpressionStatement", - "start": 0, "end": 19, "expression": { - "type": "CallExpression", - "type": "CallExpression", - "start": 0, - "end": 19, - "callee": { - "type": "Identifier", - "start": 0, - "end": 6, - "name": "lineTo" - }, "arguments": [ { - "type": "ObjectExpression", - "type": "ObjectExpression", - "start": 7, "end": 18, "properties": [ { - "type": "ObjectProperty", - "start": 8, "end": 17, "key": { - "type": "Identifier", - "start": 8, "end": 10, - "name": "to" + "name": "to", + "start": 8, + "type": "Identifier" }, + "start": 8, + "type": "ObjectProperty", "value": { - "type": "ArrayExpression", - "type": "ArrayExpression", - "start": 11, - "end": 17, "elements": [ { - "type": "Literal", - "type": "Literal", - "start": 12, "end": 13, - "value": 0, - "raw": "0" + "raw": "0", + "start": 12, + "type": "Literal", + "type": "Literal", + "value": 0 }, { - "type": "Literal", - "type": "Literal", - "start": 15, "end": 16, - "value": 1, - "raw": "1" + "raw": "1", + "start": 15, + "type": "Literal", + "type": "Literal", + "value": 1 } - ] + ], + "end": 17, + "start": 11, + "type": "ArrayExpression", + "type": "ArrayExpression" } } - ] + ], + "start": 7, + "type": "ObjectExpression", + "type": "ObjectExpression" } ], - "optional": false - } + "callee": { + "end": 6, + "name": "lineTo", + "start": 0, + "type": "Identifier" + }, + "end": 19, + "optional": false, + "start": 0, + "type": "CallExpression", + "type": "CallExpression" + }, + "start": 0, + "type": "ExpressionStatement", + "type": "ExpressionStatement" } - ] + ], + "end": 19, + "start": 0 } diff --git a/src/wasm-lib/kcl/src/parser/snapshots/kcl_lib__parser__parser_impl__snapshot_tests__an.snap b/src/wasm-lib/kcl/src/parser/snapshots/kcl_lib__parser__parser_impl__snapshot_tests__an.snap index c066ffd25..9732c22f5 100644 --- a/src/wasm-lib/kcl/src/parser/snapshots/kcl_lib__parser__parser_impl__snapshot_tests__an.snap +++ b/src/wasm-lib/kcl/src/parser/snapshots/kcl_lib__parser__parser_impl__snapshot_tests__an.snap @@ -3,107 +3,107 @@ source: kcl/src/parser/parser_impl.rs expression: actual --- { - "start": 0, - "end": 35, "body": [ { - "type": "ExpressionStatement", - "type": "ExpressionStatement", - "start": 0, "end": 35, "expression": { - "type": "CallExpression", - "type": "CallExpression", - "start": 0, - "end": 35, - "callee": { - "type": "Identifier", - "start": 0, - "end": 6, - "name": "lineTo" - }, "arguments": [ { - "type": "ObjectExpression", - "type": "ObjectExpression", - "start": 7, "end": 34, "properties": [ { - "type": "ObjectProperty", - "start": 9, "end": 19, "key": { - "type": "Identifier", - "start": 9, "end": 11, - "name": "to" + "name": "to", + "start": 9, + "type": "Identifier" }, + "start": 9, + "type": "ObjectProperty", "value": { - "type": "ArrayExpression", - "type": "ArrayExpression", - "start": 13, - "end": 19, "elements": [ { - "type": "Literal", - "type": "Literal", - "start": 14, "end": 15, - "value": 0, - "raw": "0" + "raw": "0", + "start": 14, + "type": "Literal", + "type": "Literal", + "value": 0 }, { - "type": "Literal", - "type": "Literal", - "start": 17, "end": 18, - "value": 1, - "raw": "1" + "raw": "1", + "start": 17, + "type": "Literal", + "type": "Literal", + "value": 1 } - ] + ], + "end": 19, + "start": 13, + "type": "ArrayExpression", + "type": "ArrayExpression" } }, { - "type": "ObjectProperty", - "start": 21, "end": 33, "key": { - "type": "Identifier", - "start": 21, "end": 25, - "name": "from" + "name": "from", + "start": 21, + "type": "Identifier" }, + "start": 21, + "type": "ObjectProperty", "value": { - "type": "ArrayExpression", - "type": "ArrayExpression", - "start": 27, - "end": 33, "elements": [ { - "type": "Literal", - "type": "Literal", - "start": 28, "end": 29, - "value": 3, - "raw": "3" + "raw": "3", + "start": 28, + "type": "Literal", + "type": "Literal", + "value": 3 }, { - "type": "Literal", - "type": "Literal", - "start": 31, "end": 32, - "value": 3, - "raw": "3" + "raw": "3", + "start": 31, + "type": "Literal", + "type": "Literal", + "value": 3 } - ] + ], + "end": 33, + "start": 27, + "type": "ArrayExpression", + "type": "ArrayExpression" } } - ] + ], + "start": 7, + "type": "ObjectExpression", + "type": "ObjectExpression" } ], - "optional": false - } + "callee": { + "end": 6, + "name": "lineTo", + "start": 0, + "type": "Identifier" + }, + "end": 35, + "optional": false, + "start": 0, + "type": "CallExpression", + "type": "CallExpression" + }, + "start": 0, + "type": "ExpressionStatement", + "type": "ExpressionStatement" } - ] + ], + "end": 35, + "start": 0 } diff --git a/src/wasm-lib/kcl/src/parser/snapshots/kcl_lib__parser__parser_impl__snapshot_tests__ao.snap b/src/wasm-lib/kcl/src/parser/snapshots/kcl_lib__parser__parser_impl__snapshot_tests__ao.snap index f41266ac4..d7192b481 100644 --- a/src/wasm-lib/kcl/src/parser/snapshots/kcl_lib__parser__parser_impl__snapshot_tests__ao.snap +++ b/src/wasm-lib/kcl/src/parser/snapshots/kcl_lib__parser__parser_impl__snapshot_tests__ao.snap @@ -3,107 +3,107 @@ source: kcl/src/parser/parser_impl.rs expression: actual --- { - "start": 0, - "end": 35, "body": [ { - "type": "ExpressionStatement", - "type": "ExpressionStatement", - "start": 0, "end": 35, "expression": { - "type": "CallExpression", - "type": "CallExpression", - "start": 0, - "end": 35, - "callee": { - "type": "Identifier", - "start": 0, - "end": 6, - "name": "lineTo" - }, "arguments": [ { - "type": "ObjectExpression", - "type": "ObjectExpression", - "start": 7, "end": 34, "properties": [ { - "type": "ObjectProperty", - "start": 9, "end": 19, "key": { - "type": "Identifier", - "start": 9, "end": 11, - "name": "to" + "name": "to", + "start": 9, + "type": "Identifier" }, + "start": 9, + "type": "ObjectProperty", "value": { - "type": "ArrayExpression", - "type": "ArrayExpression", - "start": 13, - "end": 19, "elements": [ { - "type": "Literal", - "type": "Literal", - "start": 14, "end": 15, - "value": 0, - "raw": "0" + "raw": "0", + "start": 14, + "type": "Literal", + "type": "Literal", + "value": 0 }, { - "type": "Literal", - "type": "Literal", - "start": 17, "end": 18, - "value": 1, - "raw": "1" + "raw": "1", + "start": 17, + "type": "Literal", + "type": "Literal", + "value": 1 } - ] + ], + "end": 19, + "start": 13, + "type": "ArrayExpression", + "type": "ArrayExpression" } }, { - "type": "ObjectProperty", - "start": 20, "end": 32, "key": { - "type": "Identifier", - "start": 20, "end": 24, - "name": "from" + "name": "from", + "start": 20, + "type": "Identifier" }, + "start": 20, + "type": "ObjectProperty", "value": { - "type": "ArrayExpression", - "type": "ArrayExpression", - "start": 26, - "end": 32, "elements": [ { - "type": "Literal", - "type": "Literal", - "start": 27, "end": 28, - "value": 3, - "raw": "3" + "raw": "3", + "start": 27, + "type": "Literal", + "type": "Literal", + "value": 3 }, { - "type": "Literal", - "type": "Literal", - "start": 30, "end": 31, - "value": 3, - "raw": "3" + "raw": "3", + "start": 30, + "type": "Literal", + "type": "Literal", + "value": 3 } - ] + ], + "end": 32, + "start": 26, + "type": "ArrayExpression", + "type": "ArrayExpression" } } - ] + ], + "start": 7, + "type": "ObjectExpression", + "type": "ObjectExpression" } ], - "optional": false - } + "callee": { + "end": 6, + "name": "lineTo", + "start": 0, + "type": "Identifier" + }, + "end": 35, + "optional": false, + "start": 0, + "type": "CallExpression", + "type": "CallExpression" + }, + "start": 0, + "type": "ExpressionStatement", + "type": "ExpressionStatement" } - ] + ], + "end": 35, + "start": 0 } diff --git a/src/wasm-lib/kcl/src/parser/snapshots/kcl_lib__parser__parser_impl__snapshot_tests__ap.snap b/src/wasm-lib/kcl/src/parser/snapshots/kcl_lib__parser__parser_impl__snapshot_tests__ap.snap index 5f41b2f23..5e99e3f37 100644 --- a/src/wasm-lib/kcl/src/parser/snapshots/kcl_lib__parser__parser_impl__snapshot_tests__ap.snap +++ b/src/wasm-lib/kcl/src/parser/snapshots/kcl_lib__parser__parser_impl__snapshot_tests__ap.snap @@ -3,67 +3,67 @@ source: kcl/src/parser/parser_impl.rs expression: actual --- { - "start": 0, - "end": 37, "body": [ { - "type": "VariableDeclaration", - "type": "VariableDeclaration", - "start": 0, - "end": 37, "declarations": [ { - "type": "VariableDeclarator", - "start": 6, "end": 37, "id": { - "type": "Identifier", - "start": 6, "end": 14, - "name": "mySketch" + "name": "mySketch", + "start": 6, + "type": "Identifier" }, "init": { - "type": "CallExpression", - "type": "CallExpression", - "start": 17, - "end": 37, - "callee": { - "type": "Identifier", - "start": 17, - "end": 30, - "name": "startSketchAt" - }, "arguments": [ { - "type": "ArrayExpression", - "type": "ArrayExpression", - "start": 31, - "end": 36, "elements": [ { - "type": "Literal", - "type": "Literal", - "start": 32, "end": 33, - "value": 0, - "raw": "0" + "raw": "0", + "start": 32, + "type": "Literal", + "type": "Literal", + "value": 0 }, { - "type": "Literal", - "type": "Literal", - "start": 34, "end": 35, - "value": 0, - "raw": "0" + "raw": "0", + "start": 34, + "type": "Literal", + "type": "Literal", + "value": 0 } - ] + ], + "end": 36, + "start": 31, + "type": "ArrayExpression", + "type": "ArrayExpression" } ], - "optional": false - } + "callee": { + "end": 30, + "name": "startSketchAt", + "start": 17, + "type": "Identifier" + }, + "end": 37, + "optional": false, + "start": 17, + "type": "CallExpression", + "type": "CallExpression" + }, + "start": 6, + "type": "VariableDeclarator" } ], - "kind": "const" + "end": 37, + "kind": "const", + "start": 0, + "type": "VariableDeclaration", + "type": "VariableDeclaration" } - ] + ], + "end": 37, + "start": 0 } diff --git a/src/wasm-lib/kcl/src/parser/snapshots/kcl_lib__parser__parser_impl__snapshot_tests__aq.snap b/src/wasm-lib/kcl/src/parser/snapshots/kcl_lib__parser__parser_impl__snapshot_tests__aq.snap index b0e4a021c..7ed31b565 100644 --- a/src/wasm-lib/kcl/src/parser/snapshots/kcl_lib__parser__parser_impl__snapshot_tests__aq.snap +++ b/src/wasm-lib/kcl/src/parser/snapshots/kcl_lib__parser__parser_impl__snapshot_tests__aq.snap @@ -3,52 +3,52 @@ source: kcl/src/parser/parser_impl.rs expression: actual --- { - "start": 0, - "end": 28, "body": [ { - "type": "ExpressionStatement", - "type": "ExpressionStatement", - "start": 0, "end": 28, "expression": { - "type": "CallExpression", - "type": "CallExpression", - "start": 0, - "end": 28, - "callee": { - "type": "Identifier", - "start": 0, - "end": 3, - "name": "log" - }, "arguments": [ { - "type": "Literal", - "type": "Literal", - "start": 4, "end": 5, - "value": 5, - "raw": "5" + "raw": "5", + "start": 4, + "type": "Literal", + "type": "Literal", + "value": 5 }, { - "type": "Literal", - "type": "Literal", - "start": 7, "end": 14, - "value": "hello", - "raw": "\"hello\"" + "raw": "\"hello\"", + "start": 7, + "type": "Literal", + "type": "Literal", + "value": "hello" }, { - "type": "Identifier", - "type": "Identifier", - "start": 16, "end": 27, - "name": "aIdentifier" + "name": "aIdentifier", + "start": 16, + "type": "Identifier", + "type": "Identifier" } ], - "optional": false - } + "callee": { + "end": 3, + "name": "log", + "start": 0, + "type": "Identifier" + }, + "end": 28, + "optional": false, + "start": 0, + "type": "CallExpression", + "type": "CallExpression" + }, + "start": 0, + "type": "ExpressionStatement", + "type": "ExpressionStatement" } - ] + ], + "end": 28, + "start": 0 } diff --git a/src/wasm-lib/kcl/src/parser/snapshots/kcl_lib__parser__parser_impl__snapshot_tests__ar.snap b/src/wasm-lib/kcl/src/parser/snapshots/kcl_lib__parser__parser_impl__snapshot_tests__ar.snap index 24602b164..0f91fbc8d 100644 --- a/src/wasm-lib/kcl/src/parser/snapshots/kcl_lib__parser__parser_impl__snapshot_tests__ar.snap +++ b/src/wasm-lib/kcl/src/parser/snapshots/kcl_lib__parser__parser_impl__snapshot_tests__ar.snap @@ -3,37 +3,37 @@ source: kcl/src/parser/parser_impl.rs expression: actual --- { - "start": 0, - "end": 7, "body": [ { - "type": "ExpressionStatement", - "type": "ExpressionStatement", - "start": 0, "end": 7, "expression": { - "type": "BinaryExpression", - "type": "BinaryExpression", - "start": 0, "end": 7, - "operator": "+", "left": { - "type": "Literal", - "type": "Literal", - "start": 0, "end": 1, - "value": 5, - "raw": "5" + "raw": "5", + "start": 0, + "type": "Literal", + "type": "Literal", + "value": 5 }, + "operator": "+", "right": { - "type": "Literal", - "type": "Literal", - "start": 4, "end": 7, - "value": "a", - "raw": "\"a\"" - } - } + "raw": "\"a\"", + "start": 4, + "type": "Literal", + "type": "Literal", + "value": "a" + }, + "start": 0, + "type": "BinaryExpression", + "type": "BinaryExpression" + }, + "start": 0, + "type": "ExpressionStatement", + "type": "ExpressionStatement" } - ] + ], + "end": 7, + "start": 0 } diff --git a/src/wasm-lib/kcl/src/parser/snapshots/kcl_lib__parser__parser_impl__snapshot_tests__at.snap b/src/wasm-lib/kcl/src/parser/snapshots/kcl_lib__parser__parser_impl__snapshot_tests__at.snap index 9935614d1..a8fb77a34 100644 --- a/src/wasm-lib/kcl/src/parser/snapshots/kcl_lib__parser__parser_impl__snapshot_tests__at.snap +++ b/src/wasm-lib/kcl/src/parser/snapshots/kcl_lib__parser__parser_impl__snapshot_tests__at.snap @@ -3,58 +3,58 @@ source: kcl/src/parser/parser_impl.rs expression: actual --- { - "start": 0, - "end": 15, "body": [ { - "type": "ExpressionStatement", - "type": "ExpressionStatement", - "start": 0, "end": 15, "expression": { - "type": "CallExpression", - "type": "CallExpression", - "start": 0, - "end": 15, - "callee": { - "type": "Identifier", - "start": 0, - "end": 4, - "name": "line" - }, "arguments": [ { - "type": "ArrayExpression", - "type": "ArrayExpression", - "start": 5, - "end": 11, "elements": [ { - "type": "Literal", - "type": "Literal", - "start": 6, "end": 7, - "value": 0, - "raw": "0" + "raw": "0", + "start": 6, + "type": "Literal", + "type": "Literal", + "value": 0 }, { - "type": "Identifier", - "type": "Identifier", - "start": 9, "end": 10, - "name": "l" + "name": "l", + "start": 9, + "type": "Identifier", + "type": "Identifier" } - ] + ], + "end": 11, + "start": 5, + "type": "ArrayExpression", + "type": "ArrayExpression" }, { - "type": "PipeSubstitution", - "type": "PipeSubstitution", + "end": 14, "start": 13, - "end": 14 + "type": "PipeSubstitution", + "type": "PipeSubstitution" } ], - "optional": false - } + "callee": { + "end": 4, + "name": "line", + "start": 0, + "type": "Identifier" + }, + "end": 15, + "optional": false, + "start": 0, + "type": "CallExpression", + "type": "CallExpression" + }, + "start": 0, + "type": "ExpressionStatement", + "type": "ExpressionStatement" } - ] + ], + "end": 15, + "start": 0 } diff --git a/src/wasm-lib/kcl/src/parser/snapshots/kcl_lib__parser__parser_impl__snapshot_tests__au.snap b/src/wasm-lib/kcl/src/parser/snapshots/kcl_lib__parser__parser_impl__snapshot_tests__au.snap index 5e5e05a1f..3c08a0bf0 100644 --- a/src/wasm-lib/kcl/src/parser/snapshots/kcl_lib__parser__parser_impl__snapshot_tests__au.snap +++ b/src/wasm-lib/kcl/src/parser/snapshots/kcl_lib__parser__parser_impl__snapshot_tests__au.snap @@ -3,171 +3,171 @@ source: kcl/src/parser/parser_impl.rs expression: actual --- { - "start": 0, - "end": 108, "body": [ { - "type": "VariableDeclaration", - "type": "VariableDeclaration", - "start": 0, - "end": 107, "declarations": [ { - "type": "VariableDeclarator", - "start": 6, "end": 107, "id": { - "type": "Identifier", - "start": 6, "end": 14, - "name": "cylinder" + "name": "cylinder", + "start": 6, + "type": "Identifier" }, "init": { - "type": "PipeExpression", - "type": "PipeExpression", - "start": 17, - "end": 107, "body": [ { - "type": "CallExpression", - "type": "CallExpression", - "start": 17, - "end": 36, - "callee": { - "type": "Identifier", - "start": 17, - "end": 30, - "name": "startSketchOn" - }, "arguments": [ { - "type": "Literal", - "type": "Literal", - "start": 31, "end": 35, - "value": "XY", - "raw": "'XY'" + "raw": "'XY'", + "start": 31, + "type": "Literal", + "type": "Literal", + "value": "XY" } ], - "optional": false + "callee": { + "end": 30, + "name": "startSketchOn", + "start": 17, + "type": "Identifier" + }, + "end": 36, + "optional": false, + "start": 17, + "type": "CallExpression", + "type": "CallExpression" }, { - "type": "CallExpression", - "type": "CallExpression", - "start": 44, - "end": 85, - "callee": { - "type": "Identifier", - "start": 44, - "end": 50, - "name": "circle" - }, "arguments": [ { - "type": "ObjectExpression", - "type": "ObjectExpression", - "start": 51, "end": 81, "properties": [ { - "type": "ObjectProperty", - "start": 53, "end": 67, "key": { - "type": "Identifier", - "start": 53, "end": 59, - "name": "center" + "name": "center", + "start": 53, + "type": "Identifier" }, + "start": 53, + "type": "ObjectProperty", "value": { - "type": "ArrayExpression", - "type": "ArrayExpression", - "start": 61, - "end": 67, "elements": [ { - "type": "Literal", - "type": "Literal", - "start": 62, "end": 63, - "value": 0, - "raw": "0" + "raw": "0", + "start": 62, + "type": "Literal", + "type": "Literal", + "value": 0 }, { - "type": "Literal", - "type": "Literal", - "start": 65, "end": 66, - "value": 0, - "raw": "0" + "raw": "0", + "start": 65, + "type": "Literal", + "type": "Literal", + "value": 0 } - ] + ], + "end": 67, + "start": 61, + "type": "ArrayExpression", + "type": "ArrayExpression" } }, { - "type": "ObjectProperty", - "start": 69, "end": 79, "key": { - "type": "Identifier", - "start": 69, "end": 75, - "name": "radius" + "name": "radius", + "start": 69, + "type": "Identifier" }, + "start": 69, + "type": "ObjectProperty", "value": { - "type": "Literal", - "type": "Literal", - "start": 77, "end": 79, - "value": 22, - "raw": "22" + "raw": "22", + "start": 77, + "type": "Literal", + "type": "Literal", + "value": 22 } } - ] + ], + "start": 51, + "type": "ObjectExpression", + "type": "ObjectExpression" }, { - "type": "PipeSubstitution", - "type": "PipeSubstitution", + "end": 84, "start": 83, - "end": 84 + "type": "PipeSubstitution", + "type": "PipeSubstitution" } ], - "optional": false + "callee": { + "end": 50, + "name": "circle", + "start": 44, + "type": "Identifier" + }, + "end": 85, + "optional": false, + "start": 44, + "type": "CallExpression", + "type": "CallExpression" }, { - "type": "CallExpression", - "type": "CallExpression", - "start": 93, - "end": 107, - "callee": { - "type": "Identifier", - "start": 93, - "end": 100, - "name": "extrude" - }, "arguments": [ { - "type": "Literal", - "type": "Literal", - "start": 101, "end": 103, - "value": 14, - "raw": "14" + "raw": "14", + "start": 101, + "type": "Literal", + "type": "Literal", + "value": 14 }, { - "type": "PipeSubstitution", - "type": "PipeSubstitution", + "end": 106, "start": 105, - "end": 106 + "type": "PipeSubstitution", + "type": "PipeSubstitution" } ], - "optional": false + "callee": { + "end": 100, + "name": "extrude", + "start": 93, + "type": "Identifier" + }, + "end": 107, + "optional": false, + "start": 93, + "type": "CallExpression", + "type": "CallExpression" } - ] - } + ], + "end": 107, + "start": 17, + "type": "PipeExpression", + "type": "PipeExpression" + }, + "start": 6, + "type": "VariableDeclarator" } ], - "kind": "const" + "end": 107, + "kind": "const", + "start": 0, + "type": "VariableDeclaration", + "type": "VariableDeclaration" } - ] + ], + "end": 108, + "start": 0 } diff --git a/src/wasm-lib/kcl/src/parser/snapshots/kcl_lib__parser__parser_impl__snapshot_tests__av.snap b/src/wasm-lib/kcl/src/parser/snapshots/kcl_lib__parser__parser_impl__snapshot_tests__av.snap index a2b0b3ace..a631e0954 100644 --- a/src/wasm-lib/kcl/src/parser/snapshots/kcl_lib__parser__parser_impl__snapshot_tests__av.snap +++ b/src/wasm-lib/kcl/src/parser/snapshots/kcl_lib__parser__parser_impl__snapshot_tests__av.snap @@ -3,88 +3,88 @@ source: kcl/src/parser/parser_impl.rs expression: actual --- { - "start": 0, - "end": 49, "body": [ { - "type": "VariableDeclaration", - "type": "VariableDeclaration", - "start": 0, - "end": 49, "declarations": [ { - "type": "VariableDeclarator", - "start": 3, "end": 49, "id": { - "type": "Identifier", - "start": 3, "end": 4, - "name": "f" + "name": "f", + "start": 3, + "type": "Identifier" }, "init": { - "type": "FunctionExpression", - "type": "FunctionExpression", - "start": 7, + "body": { + "body": [ + { + "argument": { + "arguments": [ + { + "end": 41, + "name": "angle", + "start": 36, + "type": "Identifier", + "type": "Identifier" + }, + { + "end": 46, + "raw": "360", + "start": 43, + "type": "Literal", + "type": "Literal", + "value": 360 + } + ], + "callee": { + "end": 35, + "name": "default", + "start": 28, + "type": "Identifier" + }, + "end": 47, + "optional": false, + "start": 28, + "type": "CallExpression", + "type": "CallExpression" + }, + "end": 47, + "start": 21, + "type": "ReturnStatement", + "type": "ReturnStatement" + } + ], + "end": 49, + "start": 19 + }, "end": 49, "params": [ { "type": "Parameter", "identifier": { - "type": "Identifier", - "start": 8, "end": 13, - "name": "angle" + "name": "angle", + "start": 8, + "type": "Identifier" }, "optional": true } ], - "body": { - "start": 19, - "end": 49, - "body": [ - { - "type": "ReturnStatement", - "type": "ReturnStatement", - "start": 21, - "end": 47, - "argument": { - "type": "CallExpression", - "type": "CallExpression", - "start": 28, - "end": 47, - "callee": { - "type": "Identifier", - "start": 28, - "end": 35, - "name": "default" - }, - "arguments": [ - { - "type": "Identifier", - "type": "Identifier", - "start": 36, - "end": 41, - "name": "angle" - }, - { - "type": "Literal", - "type": "Literal", - "start": 43, - "end": 46, - "value": 360, - "raw": "360" - } - ], - "optional": false - } - } - ] - } - } + "start": 7, + "type": "FunctionExpression", + "type": "FunctionExpression" + }, + "start": 3, + "type": "VariableDeclarator" } ], - "kind": "fn" + "end": 49, + "kind": "fn", + "start": 0, + "type": "VariableDeclaration", + "type": "VariableDeclaration" } - ] + ], + "end": 49, + "start": 0 } diff --git a/src/wasm-lib/kcl/src/parser/snapshots/kcl_lib__parser__parser_impl__snapshot_tests__aw.snap b/src/wasm-lib/kcl/src/parser/snapshots/kcl_lib__parser__parser_impl__snapshot_tests__aw.snap index b0136cfce..db78d6395 100644 --- a/src/wasm-lib/kcl/src/parser/snapshots/kcl_lib__parser__parser_impl__snapshot_tests__aw.snap +++ b/src/wasm-lib/kcl/src/parser/snapshots/kcl_lib__parser__parser_impl__snapshot_tests__aw.snap @@ -3,55 +3,44 @@ source: kcl/src/parser/parser_impl.rs expression: actual --- { - "start": 0, - "end": 91, "body": [ { - "type": "VariableDeclaration", - "type": "VariableDeclaration", - "start": 0, - "end": 91, "declarations": [ { - "type": "VariableDeclarator", - "start": 4, "end": 91, "id": { - "type": "Identifier", - "start": 4, "end": 11, - "name": "numbers" + "name": "numbers", + "start": 4, + "type": "Identifier" }, "init": { - "type": "ArrayExpression", - "type": "ArrayExpression", - "start": 14, - "end": 91, "elements": [ { - "type": "Literal", - "type": "Literal", - "start": 28, "end": 29, - "value": 1, - "raw": "1" + "raw": "1", + "start": 28, + "type": "Literal", + "type": "Literal", + "value": 1 }, { - "type": "Literal", - "type": "Literal", - "start": 79, "end": 80, - "value": 3, - "raw": "3" + "raw": "3", + "start": 79, + "type": "Literal", + "type": "Literal", + "value": 3 } ], + "end": 91, "nonCodeMeta": { "nonCodeNodes": { "1": [ { - "type": "NonCodeNode", - "start": 43, "end": 48, + "start": 43, + "type": "NonCodeNode", "value": { "type": "blockComment", "value": "A,", @@ -61,9 +50,9 @@ expression: actual ], "2": [ { - "type": "NonCodeNode", - "start": 61, "end": 66, + "start": 61, + "type": "NonCodeNode", "value": { "type": "blockComment", "value": "B,", @@ -72,12 +61,23 @@ expression: actual } ] }, - "start": [] - } - } + "startNodes": [] + }, + "start": 14, + "type": "ArrayExpression", + "type": "ArrayExpression" + }, + "start": 4, + "type": "VariableDeclarator" } ], - "kind": "const" + "end": 91, + "kind": "const", + "start": 0, + "type": "VariableDeclaration", + "type": "VariableDeclaration" } - ] + ], + "end": 91, + "start": 0 } diff --git a/src/wasm-lib/kcl/src/parser/snapshots/kcl_lib__parser__parser_impl__snapshot_tests__ax.snap b/src/wasm-lib/kcl/src/parser/snapshots/kcl_lib__parser__parser_impl__snapshot_tests__ax.snap index f3e1a73c7..5598578f6 100644 --- a/src/wasm-lib/kcl/src/parser/snapshots/kcl_lib__parser__parser_impl__snapshot_tests__ax.snap +++ b/src/wasm-lib/kcl/src/parser/snapshots/kcl_lib__parser__parser_impl__snapshot_tests__ax.snap @@ -3,55 +3,44 @@ source: kcl/src/parser/parser_impl.rs expression: actual --- { - "start": 0, - "end": 91, "body": [ { - "type": "VariableDeclaration", - "type": "VariableDeclaration", - "start": 0, - "end": 91, "declarations": [ { - "type": "VariableDeclarator", - "start": 4, "end": 91, "id": { - "type": "Identifier", - "start": 4, "end": 11, - "name": "numbers" + "name": "numbers", + "start": 4, + "type": "Identifier" }, "init": { - "type": "ArrayExpression", - "type": "ArrayExpression", - "start": 14, - "end": 91, "elements": [ { - "type": "Literal", - "type": "Literal", - "start": 28, "end": 29, - "value": 1, - "raw": "1" + "raw": "1", + "start": 28, + "type": "Literal", + "type": "Literal", + "value": 1 }, { - "type": "Literal", - "type": "Literal", - "start": 43, "end": 44, - "value": 2, - "raw": "2" + "raw": "2", + "start": 43, + "type": "Literal", + "type": "Literal", + "value": 2 } ], + "end": 91, "nonCodeMeta": { "nonCodeNodes": { "2": [ { - "type": "NonCodeNode", - "start": 58, "end": 63, + "start": 58, + "type": "NonCodeNode", "value": { "type": "blockComment", "value": "A,", @@ -61,9 +50,9 @@ expression: actual ], "3": [ { - "type": "NonCodeNode", - "start": 76, "end": 81, + "start": 76, + "type": "NonCodeNode", "value": { "type": "blockComment", "value": "B,", @@ -72,12 +61,23 @@ expression: actual } ] }, - "start": [] - } - } + "startNodes": [] + }, + "start": 14, + "type": "ArrayExpression", + "type": "ArrayExpression" + }, + "start": 4, + "type": "VariableDeclarator" } ], - "kind": "const" + "end": 91, + "kind": "const", + "start": 0, + "type": "VariableDeclaration", + "type": "VariableDeclaration" } - ] + ], + "end": 91, + "start": 0 } diff --git a/src/wasm-lib/kcl/src/parser/snapshots/kcl_lib__parser__parser_impl__snapshot_tests__ay.snap b/src/wasm-lib/kcl/src/parser/snapshots/kcl_lib__parser__parser_impl__snapshot_tests__ay.snap index 5aa896ef5..4599b186d 100644 --- a/src/wasm-lib/kcl/src/parser/snapshots/kcl_lib__parser__parser_impl__snapshot_tests__ay.snap +++ b/src/wasm-lib/kcl/src/parser/snapshots/kcl_lib__parser__parser_impl__snapshot_tests__ay.snap @@ -3,77 +3,26 @@ source: kcl/src/parser/parser_impl.rs expression: actual --- { - "start": 0, - "end": 80, "body": [ { - "type": "VariableDeclaration", - "type": "VariableDeclaration", - "start": 0, - "end": 80, "declarations": [ { - "type": "VariableDeclarator", - "start": 4, "end": 80, "id": { - "type": "Identifier", - "start": 4, "end": 9, - "name": "props" + "name": "props", + "start": 4, + "type": "Identifier" }, "init": { - "type": "ObjectExpression", - "type": "ObjectExpression", - "start": 12, "end": 80, - "properties": [ - { - "type": "ObjectProperty", - "start": 26, - "end": 30, - "key": { - "type": "Identifier", - "start": 26, - "end": 27, - "name": "a" - }, - "value": { - "type": "Literal", - "type": "Literal", - "start": 29, - "end": 30, - "value": 1, - "raw": "1" - } - }, - { - "type": "ObjectProperty", - "start": 65, - "end": 69, - "key": { - "type": "Identifier", - "start": 65, - "end": 66, - "name": "c" - }, - "value": { - "type": "Literal", - "type": "Literal", - "start": 68, - "end": 69, - "value": 3, - "raw": "3" - } - } - ], "nonCodeMeta": { "nonCodeNodes": { "1": [ { - "type": "NonCodeNode", - "start": 44, "end": 52, + "start": 44, + "type": "NonCodeNode", "value": { "type": "blockComment", "value": "b: 2,", @@ -82,12 +31,63 @@ expression: actual } ] }, - "start": [] - } - } + "startNodes": [] + }, + "properties": [ + { + "end": 30, + "key": { + "end": 27, + "name": "a", + "start": 26, + "type": "Identifier" + }, + "start": 26, + "type": "ObjectProperty", + "value": { + "end": 30, + "raw": "1", + "start": 29, + "type": "Literal", + "type": "Literal", + "value": 1 + } + }, + { + "end": 69, + "key": { + "end": 66, + "name": "c", + "start": 65, + "type": "Identifier" + }, + "start": 65, + "type": "ObjectProperty", + "value": { + "end": 69, + "raw": "3", + "start": 68, + "type": "Literal", + "type": "Literal", + "value": 3 + } + } + ], + "start": 12, + "type": "ObjectExpression", + "type": "ObjectExpression" + }, + "start": 4, + "type": "VariableDeclarator" } ], - "kind": "const" + "end": 80, + "kind": "const", + "start": 0, + "type": "VariableDeclaration", + "type": "VariableDeclaration" } - ] + ], + "end": 80, + "start": 0 } diff --git a/src/wasm-lib/kcl/src/parser/snapshots/kcl_lib__parser__parser_impl__snapshot_tests__az.snap b/src/wasm-lib/kcl/src/parser/snapshots/kcl_lib__parser__parser_impl__snapshot_tests__az.snap index 28b28fc24..fc06a858d 100644 --- a/src/wasm-lib/kcl/src/parser/snapshots/kcl_lib__parser__parser_impl__snapshot_tests__az.snap +++ b/src/wasm-lib/kcl/src/parser/snapshots/kcl_lib__parser__parser_impl__snapshot_tests__az.snap @@ -3,77 +3,26 @@ source: kcl/src/parser/parser_impl.rs expression: actual --- { - "start": 0, - "end": 79, "body": [ { - "type": "VariableDeclaration", - "type": "VariableDeclaration", - "start": 0, - "end": 79, "declarations": [ { - "type": "VariableDeclarator", - "start": 4, "end": 79, "id": { - "type": "Identifier", - "start": 4, "end": 9, - "name": "props" + "name": "props", + "start": 4, + "type": "Identifier" }, "init": { - "type": "ObjectExpression", - "type": "ObjectExpression", - "start": 12, "end": 79, - "properties": [ - { - "type": "ObjectProperty", - "start": 26, - "end": 30, - "key": { - "type": "Identifier", - "start": 26, - "end": 27, - "name": "a" - }, - "value": { - "type": "Literal", - "type": "Literal", - "start": 29, - "end": 30, - "value": 1, - "raw": "1" - } - }, - { - "type": "ObjectProperty", - "start": 65, - "end": 69, - "key": { - "type": "Identifier", - "start": 65, - "end": 66, - "name": "c" - }, - "value": { - "type": "Literal", - "type": "Literal", - "start": 68, - "end": 69, - "value": 3, - "raw": "3" - } - } - ], "nonCodeMeta": { "nonCodeNodes": { "1": [ { - "type": "NonCodeNode", - "start": 44, "end": 52, + "start": 44, + "type": "NonCodeNode", "value": { "type": "blockComment", "value": "b: 2,", @@ -82,12 +31,63 @@ expression: actual } ] }, - "start": [] - } - } + "startNodes": [] + }, + "properties": [ + { + "end": 30, + "key": { + "end": 27, + "name": "a", + "start": 26, + "type": "Identifier" + }, + "start": 26, + "type": "ObjectProperty", + "value": { + "end": 30, + "raw": "1", + "start": 29, + "type": "Literal", + "type": "Literal", + "value": 1 + } + }, + { + "end": 69, + "key": { + "end": 66, + "name": "c", + "start": 65, + "type": "Identifier" + }, + "start": 65, + "type": "ObjectProperty", + "value": { + "end": 69, + "raw": "3", + "start": 68, + "type": "Literal", + "type": "Literal", + "value": 3 + } + } + ], + "start": 12, + "type": "ObjectExpression", + "type": "ObjectExpression" + }, + "start": 4, + "type": "VariableDeclarator" } ], - "kind": "const" + "end": 79, + "kind": "const", + "start": 0, + "type": "VariableDeclaration", + "type": "VariableDeclaration" } - ] + ], + "end": 79, + "start": 0 } diff --git a/src/wasm-lib/kcl/src/parser/snapshots/kcl_lib__parser__parser_impl__snapshot_tests__b.snap b/src/wasm-lib/kcl/src/parser/snapshots/kcl_lib__parser__parser_impl__snapshot_tests__b.snap index 8360a7369..e54a3e613 100644 --- a/src/wasm-lib/kcl/src/parser/snapshots/kcl_lib__parser__parser_impl__snapshot_tests__b.snap +++ b/src/wasm-lib/kcl/src/parser/snapshots/kcl_lib__parser__parser_impl__snapshot_tests__b.snap @@ -3,89 +3,89 @@ source: kcl/src/parser/parser_impl.rs expression: actual --- { - "start": 0, - "end": 36, "body": [ { - "type": "VariableDeclaration", - "type": "VariableDeclaration", - "start": 0, - "end": 36, "declarations": [ { - "type": "VariableDeclarator", - "start": 6, "end": 36, "id": { - "type": "Identifier", - "start": 6, "end": 11, - "name": "myVar" + "name": "myVar", + "start": 6, + "type": "Identifier" }, "init": { - "type": "CallExpression", - "type": "CallExpression", - "start": 14, - "end": 36, - "callee": { - "type": "Identifier", - "start": 14, - "end": 17, - "name": "min" - }, "arguments": [ { - "type": "Literal", - "type": "Literal", - "start": 18, "end": 19, - "value": 5, - "raw": "5" + "raw": "5", + "start": 18, + "type": "Literal", + "type": "Literal", + "value": 5 }, { - "type": "UnaryExpression", - "type": "UnaryExpression", - "start": 22, - "end": 35, - "operator": "-", "argument": { - "type": "CallExpression", - "type": "CallExpression", - "start": 23, - "end": 35, - "callee": { - "type": "Identifier", - "start": 23, - "end": 29, - "name": "legLen" - }, "arguments": [ { - "type": "Literal", - "type": "Literal", - "start": 30, "end": 31, - "value": 5, - "raw": "5" + "raw": "5", + "start": 30, + "type": "Literal", + "type": "Literal", + "value": 5 }, { - "type": "Literal", - "type": "Literal", - "start": 33, "end": 34, - "value": 4, - "raw": "4" + "raw": "4", + "start": 33, + "type": "Literal", + "type": "Literal", + "value": 4 } ], - "optional": false - } + "callee": { + "end": 29, + "name": "legLen", + "start": 23, + "type": "Identifier" + }, + "end": 35, + "optional": false, + "start": 23, + "type": "CallExpression", + "type": "CallExpression" + }, + "end": 35, + "operator": "-", + "start": 22, + "type": "UnaryExpression", + "type": "UnaryExpression" } ], - "optional": false - } + "callee": { + "end": 17, + "name": "min", + "start": 14, + "type": "Identifier" + }, + "end": 36, + "optional": false, + "start": 14, + "type": "CallExpression", + "type": "CallExpression" + }, + "start": 6, + "type": "VariableDeclarator" } ], - "kind": "const" + "end": 36, + "kind": "const", + "start": 0, + "type": "VariableDeclaration", + "type": "VariableDeclaration" } - ] + ], + "end": 36, + "start": 0 } diff --git a/src/wasm-lib/kcl/src/parser/snapshots/kcl_lib__parser__parser_impl__snapshot_tests__ba.snap b/src/wasm-lib/kcl/src/parser/snapshots/kcl_lib__parser__parser_impl__snapshot_tests__ba.snap index 9b5d26a1b..0a9ac7936 100644 --- a/src/wasm-lib/kcl/src/parser/snapshots/kcl_lib__parser__parser_impl__snapshot_tests__ba.snap +++ b/src/wasm-lib/kcl/src/parser/snapshots/kcl_lib__parser__parser_impl__snapshot_tests__ba.snap @@ -3,83 +3,72 @@ source: kcl/src/parser/parser_impl.rs expression: actual --- { - "start": 0, - "end": 133, "body": [ { - "type": "VariableDeclaration", - "type": "VariableDeclaration", - "start": 1, - "end": 132, "declarations": [ { - "type": "VariableDeclarator", - "start": 7, "end": 132, "id": { - "type": "Identifier", - "start": 7, "end": 16, - "name": "sketch001" + "name": "sketch001", + "start": 7, + "type": "Identifier" }, "init": { - "type": "PipeExpression", - "type": "PipeExpression", - "start": 19, - "end": 132, "body": [ { - "type": "CallExpression", - "type": "CallExpression", - "start": 19, - "end": 38, - "callee": { - "type": "Identifier", - "start": 19, - "end": 32, - "name": "startSketchOn" - }, "arguments": [ { - "type": "Literal", - "type": "Literal", - "start": 33, "end": 37, - "value": "XY", - "raw": "'XY'" + "raw": "'XY'", + "start": 33, + "type": "Literal", + "type": "Literal", + "value": "XY" } ], - "optional": false + "callee": { + "end": 32, + "name": "startSketchOn", + "start": 19, + "type": "Identifier" + }, + "end": 38, + "optional": false, + "start": 19, + "type": "CallExpression", + "type": "CallExpression" }, { - "type": "CallExpression", - "type": "CallExpression", - "start": 115, - "end": 132, - "callee": { - "type": "Identifier", - "start": 115, - "end": 129, - "name": "startProfileAt" - }, "arguments": [ { - "type": "PipeSubstitution", - "type": "PipeSubstitution", + "end": 131, "start": 130, - "end": 131 + "type": "PipeSubstitution", + "type": "PipeSubstitution" } ], - "optional": false + "callee": { + "end": 129, + "name": "startProfileAt", + "start": 115, + "type": "Identifier" + }, + "end": 132, + "optional": false, + "start": 115, + "type": "CallExpression", + "type": "CallExpression" } ], + "end": 132, "nonCodeMeta": { "nonCodeNodes": { "0": [ { - "type": "NonCodeNode", - "start": 41, "end": 52, + "start": 41, + "type": "NonCodeNode", "value": { "type": "blockComment", "value": "|> arc({", @@ -87,9 +76,9 @@ expression: actual } }, { - "type": "NonCodeNode", - "start": 55, "end": 74, + "start": 55, + "type": "NonCodeNode", "value": { "type": "blockComment", "value": "angleEnd: 270,", @@ -97,9 +86,9 @@ expression: actual } }, { - "type": "NonCodeNode", - "start": 77, "end": 98, + "start": 77, + "type": "NonCodeNode", "value": { "type": "blockComment", "value": "angleStart: 450,", @@ -107,9 +96,9 @@ expression: actual } }, { - "type": "NonCodeNode", - "start": 101, "end": 109, + "start": 101, + "type": "NonCodeNode", "value": { "type": "blockComment", "value": "}, %)", @@ -118,12 +107,23 @@ expression: actual } ] }, - "start": [] - } - } + "startNodes": [] + }, + "start": 19, + "type": "PipeExpression", + "type": "PipeExpression" + }, + "start": 7, + "type": "VariableDeclarator" } ], - "kind": "const" + "end": 132, + "kind": "const", + "start": 1, + "type": "VariableDeclaration", + "type": "VariableDeclaration" } - ] + ], + "end": 133, + "start": 0 } diff --git a/src/wasm-lib/kcl/src/parser/snapshots/kcl_lib__parser__parser_impl__snapshot_tests__bb.snap b/src/wasm-lib/kcl/src/parser/snapshots/kcl_lib__parser__parser_impl__snapshot_tests__bb.snap index 1bec34927..780dc200d 100644 --- a/src/wasm-lib/kcl/src/parser/snapshots/kcl_lib__parser__parser_impl__snapshot_tests__bb.snap +++ b/src/wasm-lib/kcl/src/parser/snapshots/kcl_lib__parser__parser_impl__snapshot_tests__bb.snap @@ -3,96 +3,96 @@ source: kcl/src/parser/parser_impl.rs expression: actual --- { - "start": 0, - "end": 32, "body": [ { - "type": "VariableDeclaration", - "type": "VariableDeclaration", - "start": 1, - "end": 31, "declarations": [ { - "type": "VariableDeclarator", - "start": 7, "end": 31, "id": { - "type": "Identifier", - "start": 7, "end": 11, - "name": "my14" + "name": "my14", + "start": 7, + "type": "Identifier" }, "init": { - "type": "BinaryExpression", - "type": "BinaryExpression", - "start": 14, "end": 31, - "operator": "-", "left": { - "type": "BinaryExpression", - "type": "BinaryExpression", - "start": 14, "end": 19, - "operator": "^", "left": { - "type": "Literal", - "type": "Literal", - "start": 14, "end": 15, - "value": 4, - "raw": "4" + "raw": "4", + "start": 14, + "type": "Literal", + "type": "Literal", + "value": 4 }, + "operator": "^", "right": { - "type": "Literal", - "type": "Literal", - "start": 18, "end": 19, - "value": 2, - "raw": "2" - } - }, - "right": { - "type": "BinaryExpression", - "type": "BinaryExpression", - "start": 22, - "end": 31, - "operator": "*", - "left": { - "type": "BinaryExpression", - "type": "BinaryExpression", - "start": 22, - "end": 27, - "operator": "^", - "left": { - "type": "Literal", - "type": "Literal", - "start": 22, - "end": 23, - "value": 3, - "raw": "3" - }, - "right": { - "type": "Literal", - "type": "Literal", - "start": 26, - "end": 27, - "value": 2, - "raw": "2" - } + "raw": "2", + "start": 18, + "type": "Literal", + "type": "Literal", + "value": 2 }, + "start": 14, + "type": "BinaryExpression", + "type": "BinaryExpression" + }, + "operator": "-", + "right": { + "end": 31, + "left": { + "end": 27, + "left": { + "end": 23, + "raw": "3", + "start": 22, + "type": "Literal", + "type": "Literal", + "value": 3 + }, + "operator": "^", + "right": { + "end": 27, + "raw": "2", + "start": 26, + "type": "Literal", + "type": "Literal", + "value": 2 + }, + "start": 22, + "type": "BinaryExpression", + "type": "BinaryExpression" + }, + "operator": "*", "right": { - "type": "Literal", - "type": "Literal", - "start": 30, "end": 31, - "value": 2, - "raw": "2" - } - } - } + "raw": "2", + "start": 30, + "type": "Literal", + "type": "Literal", + "value": 2 + }, + "start": 22, + "type": "BinaryExpression", + "type": "BinaryExpression" + }, + "start": 14, + "type": "BinaryExpression", + "type": "BinaryExpression" + }, + "start": 7, + "type": "VariableDeclarator" } ], - "kind": "const" + "end": 31, + "kind": "const", + "start": 1, + "type": "VariableDeclaration", + "type": "VariableDeclaration" } - ] + ], + "end": 32, + "start": 0 } diff --git a/src/wasm-lib/kcl/src/parser/snapshots/kcl_lib__parser__parser_impl__snapshot_tests__bc.snap b/src/wasm-lib/kcl/src/parser/snapshots/kcl_lib__parser__parser_impl__snapshot_tests__bc.snap index 25bea0567..f666a67f3 100644 --- a/src/wasm-lib/kcl/src/parser/snapshots/kcl_lib__parser__parser_impl__snapshot_tests__bc.snap +++ b/src/wasm-lib/kcl/src/parser/snapshots/kcl_lib__parser__parser_impl__snapshot_tests__bc.snap @@ -3,84 +3,84 @@ source: kcl/src/parser/parser_impl.rs expression: actual --- { - "start": 0, - "end": 74, "body": [ { - "type": "VariableDeclaration", - "type": "VariableDeclaration", - "start": 0, - "end": 74, "declarations": [ { - "type": "VariableDeclarator", - "start": 6, "end": 74, "id": { - "type": "Identifier", - "start": 6, "end": 7, - "name": "x" + "name": "x", + "start": 6, + "type": "Identifier" }, "init": { - "type": "IfExpression", - "type": "IfExpression", - "start": 10, - "end": 74, "cond": { - "type": "Literal", - "type": "Literal", - "start": 13, "end": 17, - "value": true, - "raw": "true" - }, - "then_val": { - "start": 32, - "end": 42, - "body": [ - { - "type": "ExpressionStatement", - "type": "ExpressionStatement", - "start": 32, - "end": 33, - "expression": { - "type": "Literal", - "type": "Literal", - "start": 32, - "end": 33, - "value": 3, - "raw": "3" - } - } - ] + "raw": "true", + "start": 13, + "type": "Literal", + "type": "Literal", + "value": true }, + "digest": null, "else_ifs": [], + "end": 74, "final_else": { - "start": 63, - "end": 73, "body": [ { - "type": "ExpressionStatement", - "type": "ExpressionStatement", - "start": 63, "end": 64, "expression": { - "type": "Literal", - "type": "Literal", - "start": 63, "end": 64, - "value": 4, - "raw": "4" - } + "raw": "4", + "start": 63, + "type": "Literal", + "type": "Literal", + "value": 4 + }, + "start": 63, + "type": "ExpressionStatement", + "type": "ExpressionStatement" } - ] + ], + "end": 73, + "start": 63 }, - "digest": null - } + "start": 10, + "then_val": { + "body": [ + { + "end": 33, + "expression": { + "end": 33, + "raw": "3", + "start": 32, + "type": "Literal", + "type": "Literal", + "value": 3 + }, + "start": 32, + "type": "ExpressionStatement", + "type": "ExpressionStatement" + } + ], + "end": 42, + "start": 32 + }, + "type": "IfExpression", + "type": "IfExpression" + }, + "start": 6, + "type": "VariableDeclarator" } ], - "kind": "const" + "end": 74, + "kind": "const", + "start": 0, + "type": "VariableDeclaration", + "type": "VariableDeclaration" } - ] + ], + "end": 74, + "start": 0 } diff --git a/src/wasm-lib/kcl/src/parser/snapshots/kcl_lib__parser__parser_impl__snapshot_tests__bd.snap b/src/wasm-lib/kcl/src/parser/snapshots/kcl_lib__parser__parser_impl__snapshot_tests__bd.snap index 42254d3fd..e27be60c5 100644 --- a/src/wasm-lib/kcl/src/parser/snapshots/kcl_lib__parser__parser_impl__snapshot_tests__bd.snap +++ b/src/wasm-lib/kcl/src/parser/snapshots/kcl_lib__parser__parser_impl__snapshot_tests__bd.snap @@ -3,133 +3,133 @@ source: kcl/src/parser/parser_impl.rs expression: actual --- { - "start": 0, - "end": 121, "body": [ { - "type": "VariableDeclaration", - "type": "VariableDeclaration", - "start": 0, - "end": 121, "declarations": [ { - "type": "VariableDeclarator", - "start": 6, "end": 121, "id": { - "type": "Identifier", - "start": 6, "end": 7, - "name": "x" + "name": "x", + "start": 6, + "type": "Identifier" }, "init": { - "type": "IfExpression", - "type": "IfExpression", - "start": 10, - "end": 121, "cond": { - "type": "Literal", - "type": "Literal", - "start": 13, "end": 17, - "value": true, - "raw": "true" - }, - "then_val": { - "start": 32, - "end": 42, - "body": [ - { - "type": "ExpressionStatement", - "type": "ExpressionStatement", - "start": 32, - "end": 33, - "expression": { - "type": "Literal", - "type": "Literal", - "start": 32, - "end": 33, - "value": 3, - "raw": "3" - } - } - ] + "raw": "true", + "start": 13, + "type": "Literal", + "type": "Literal", + "value": true }, + "digest": null, "else_ifs": [ { - "type": "ElseIf", - "start": 44, - "end": 90, "cond": { - "type": "CallExpression", - "type": "CallExpression", - "start": 52, - "end": 64, - "callee": { - "type": "Identifier", - "start": 52, - "end": 56, - "name": "func" - }, "arguments": [ { - "type": "Identifier", - "type": "Identifier", - "start": 57, "end": 63, - "name": "radius" + "name": "radius", + "start": 57, + "type": "Identifier", + "type": "Identifier" } ], - "optional": false + "callee": { + "end": 56, + "name": "func", + "start": 52, + "type": "Identifier" + }, + "end": 64, + "optional": false, + "start": 52, + "type": "CallExpression", + "type": "CallExpression" }, + "digest": null, + "end": 90, + "start": 44, "then_val": { - "start": 65, - "end": 89, "body": [ { - "type": "ExpressionStatement", - "type": "ExpressionStatement", - "start": 79, "end": 80, "expression": { - "type": "Literal", - "type": "Literal", - "start": 79, "end": 80, - "value": 4, - "raw": "4" - } + "raw": "4", + "start": 79, + "type": "Literal", + "type": "Literal", + "value": 4 + }, + "start": 79, + "type": "ExpressionStatement", + "type": "ExpressionStatement" } - ] + ], + "end": 89, + "start": 65 }, - "digest": null + "type": "ElseIf" } ], + "end": 121, "final_else": { - "start": 110, - "end": 120, "body": [ { - "type": "ExpressionStatement", - "type": "ExpressionStatement", - "start": 110, "end": 111, "expression": { - "type": "Literal", - "type": "Literal", - "start": 110, "end": 111, - "value": 5, - "raw": "5" - } + "raw": "5", + "start": 110, + "type": "Literal", + "type": "Literal", + "value": 5 + }, + "start": 110, + "type": "ExpressionStatement", + "type": "ExpressionStatement" } - ] + ], + "end": 120, + "start": 110 }, - "digest": null - } + "start": 10, + "then_val": { + "body": [ + { + "end": 33, + "expression": { + "end": 33, + "raw": "3", + "start": 32, + "type": "Literal", + "type": "Literal", + "value": 3 + }, + "start": 32, + "type": "ExpressionStatement", + "type": "ExpressionStatement" + } + ], + "end": 42, + "start": 32 + }, + "type": "IfExpression", + "type": "IfExpression" + }, + "start": 6, + "type": "VariableDeclarator" } ], - "kind": "const" + "end": 121, + "kind": "const", + "start": 0, + "type": "VariableDeclaration", + "type": "VariableDeclaration" } - ] + ], + "end": 121, + "start": 0 } diff --git a/src/wasm-lib/kcl/src/parser/snapshots/kcl_lib__parser__parser_impl__snapshot_tests__be.snap b/src/wasm-lib/kcl/src/parser/snapshots/kcl_lib__parser__parser_impl__snapshot_tests__be.snap index 6753e459d..2eaa1e886 100644 --- a/src/wasm-lib/kcl/src/parser/snapshots/kcl_lib__parser__parser_impl__snapshot_tests__be.snap +++ b/src/wasm-lib/kcl/src/parser/snapshots/kcl_lib__parser__parser_impl__snapshot_tests__be.snap @@ -3,51 +3,51 @@ source: kcl/src/parser/parser_impl.rs expression: actual --- { - "start": 0, - "end": 14, "body": [ { - "type": "VariableDeclaration", - "type": "VariableDeclaration", - "start": 0, - "end": 14, "declarations": [ { - "type": "VariableDeclarator", - "start": 4, "end": 14, "id": { - "type": "Identifier", - "start": 4, "end": 5, - "name": "x" + "name": "x", + "start": 4, + "type": "Identifier" }, "init": { - "type": "BinaryExpression", - "type": "BinaryExpression", - "start": 8, "end": 14, - "operator": "==", "left": { - "type": "Literal", - "type": "Literal", - "start": 8, "end": 9, - "value": 3, - "raw": "3" + "raw": "3", + "start": 8, + "type": "Literal", + "type": "Literal", + "value": 3 }, + "operator": "==", "right": { - "type": "Literal", - "type": "Literal", - "start": 13, "end": 14, - "value": 3, - "raw": "3" - } - } + "raw": "3", + "start": 13, + "type": "Literal", + "type": "Literal", + "value": 3 + }, + "start": 8, + "type": "BinaryExpression", + "type": "BinaryExpression" + }, + "start": 4, + "type": "VariableDeclarator" } ], - "kind": "const" + "end": 14, + "kind": "const", + "start": 0, + "type": "VariableDeclaration", + "type": "VariableDeclaration" } - ] + ], + "end": 14, + "start": 0 } diff --git a/src/wasm-lib/kcl/src/parser/snapshots/kcl_lib__parser__parser_impl__snapshot_tests__bf.snap b/src/wasm-lib/kcl/src/parser/snapshots/kcl_lib__parser__parser_impl__snapshot_tests__bf.snap index 3cd6916f6..3ef1d35f1 100644 --- a/src/wasm-lib/kcl/src/parser/snapshots/kcl_lib__parser__parser_impl__snapshot_tests__bf.snap +++ b/src/wasm-lib/kcl/src/parser/snapshots/kcl_lib__parser__parser_impl__snapshot_tests__bf.snap @@ -3,51 +3,51 @@ source: kcl/src/parser/parser_impl.rs expression: actual --- { - "start": 0, - "end": 14, "body": [ { - "type": "VariableDeclaration", - "type": "VariableDeclaration", - "start": 0, - "end": 14, "declarations": [ { - "type": "VariableDeclarator", - "start": 4, "end": 14, "id": { - "type": "Identifier", - "start": 4, "end": 5, - "name": "x" + "name": "x", + "start": 4, + "type": "Identifier" }, "init": { - "type": "BinaryExpression", - "type": "BinaryExpression", - "start": 8, "end": 14, - "operator": "!=", "left": { - "type": "Literal", - "type": "Literal", - "start": 8, "end": 9, - "value": 3, - "raw": "3" + "raw": "3", + "start": 8, + "type": "Literal", + "type": "Literal", + "value": 3 }, + "operator": "!=", "right": { - "type": "Literal", - "type": "Literal", - "start": 13, "end": 14, - "value": 3, - "raw": "3" - } - } + "raw": "3", + "start": 13, + "type": "Literal", + "type": "Literal", + "value": 3 + }, + "start": 8, + "type": "BinaryExpression", + "type": "BinaryExpression" + }, + "start": 4, + "type": "VariableDeclarator" } ], - "kind": "const" + "end": 14, + "kind": "const", + "start": 0, + "type": "VariableDeclaration", + "type": "VariableDeclaration" } - ] + ], + "end": 14, + "start": 0 } diff --git a/src/wasm-lib/kcl/src/parser/snapshots/kcl_lib__parser__parser_impl__snapshot_tests__bg.snap b/src/wasm-lib/kcl/src/parser/snapshots/kcl_lib__parser__parser_impl__snapshot_tests__bg.snap index 86e134846..c7bd3c4eb 100644 --- a/src/wasm-lib/kcl/src/parser/snapshots/kcl_lib__parser__parser_impl__snapshot_tests__bg.snap +++ b/src/wasm-lib/kcl/src/parser/snapshots/kcl_lib__parser__parser_impl__snapshot_tests__bg.snap @@ -3,36 +3,36 @@ source: kcl/src/parser/parser_impl.rs expression: actual --- { - "start": 0, - "end": 5, "body": [ { - "type": "VariableDeclaration", - "type": "VariableDeclaration", - "start": 0, - "end": 5, "declarations": [ { - "type": "VariableDeclarator", - "start": 0, "end": 5, "id": { - "type": "Identifier", - "start": 0, "end": 1, - "name": "x" + "name": "x", + "start": 0, + "type": "Identifier" }, "init": { - "type": "Literal", - "type": "Literal", - "start": 4, "end": 5, - "value": 4, - "raw": "4" - } + "raw": "4", + "start": 4, + "type": "Literal", + "type": "Literal", + "value": 4 + }, + "start": 0, + "type": "VariableDeclarator" } ], - "kind": "const" + "end": 5, + "kind": "const", + "start": 0, + "type": "VariableDeclaration", + "type": "VariableDeclaration" } - ] + ], + "end": 5, + "start": 0 } diff --git a/src/wasm-lib/kcl/src/parser/snapshots/kcl_lib__parser__parser_impl__snapshot_tests__bh.snap b/src/wasm-lib/kcl/src/parser/snapshots/kcl_lib__parser__parser_impl__snapshot_tests__bh.snap index 3a2670ced..3f909f8cc 100644 --- a/src/wasm-lib/kcl/src/parser/snapshots/kcl_lib__parser__parser_impl__snapshot_tests__bh.snap +++ b/src/wasm-lib/kcl/src/parser/snapshots/kcl_lib__parser__parser_impl__snapshot_tests__bh.snap @@ -3,90 +3,90 @@ source: kcl/src/parser/parser_impl.rs expression: actual --- { - "start": 0, - "end": 42, "body": [ { - "type": "VariableDeclaration", - "type": "VariableDeclaration", - "start": 0, - "end": 42, "declarations": [ { - "type": "VariableDeclarator", - "start": 6, "end": 42, "id": { - "type": "Identifier", - "start": 6, "end": 9, - "name": "obj" + "name": "obj", + "start": 6, + "type": "Identifier" }, "init": { - "type": "ObjectExpression", - "type": "ObjectExpression", - "start": 12, "end": 42, "properties": [ { - "type": "ObjectProperty", - "start": 13, "end": 30, "key": { - "type": "Identifier", - "start": 13, "end": 19, - "name": "center" + "name": "center", + "start": 13, + "type": "Identifier" }, + "start": 13, + "type": "ObjectProperty", "value": { - "type": "ArrayExpression", - "type": "ArrayExpression", - "start": 22, - "end": 30, "elements": [ { - "type": "Literal", - "type": "Literal", - "start": 23, "end": 25, - "value": 10, - "raw": "10" + "raw": "10", + "start": 23, + "type": "Literal", + "type": "Literal", + "value": 10 }, { - "type": "Literal", - "type": "Literal", - "start": 27, "end": 29, - "value": 10, - "raw": "10" + "raw": "10", + "start": 27, + "type": "Literal", + "type": "Literal", + "value": 10 } - ] + ], + "end": 30, + "start": 22, + "type": "ArrayExpression", + "type": "ArrayExpression" } }, { - "type": "ObjectProperty", - "start": 32, "end": 41, "key": { - "type": "Identifier", - "start": 32, "end": 38, - "name": "radius" + "name": "radius", + "start": 32, + "type": "Identifier" }, + "start": 32, + "type": "ObjectProperty", "value": { - "type": "Literal", - "type": "Literal", - "start": 40, "end": 41, - "value": 5, - "raw": "5" + "raw": "5", + "start": 40, + "type": "Literal", + "type": "Literal", + "value": 5 } } - ] - } + ], + "start": 12, + "type": "ObjectExpression", + "type": "ObjectExpression" + }, + "start": 6, + "type": "VariableDeclarator" } ], - "kind": "const" + "end": 42, + "kind": "const", + "start": 0, + "type": "VariableDeclaration", + "type": "VariableDeclaration" } - ] + ], + "end": 42, + "start": 0 } diff --git a/src/wasm-lib/kcl/src/parser/snapshots/kcl_lib__parser__parser_impl__snapshot_tests__c.snap b/src/wasm-lib/kcl/src/parser/snapshots/kcl_lib__parser__parser_impl__snapshot_tests__c.snap index 919a7cae5..5a53a6c8d 100644 --- a/src/wasm-lib/kcl/src/parser/snapshots/kcl_lib__parser__parser_impl__snapshot_tests__c.snap +++ b/src/wasm-lib/kcl/src/parser/snapshots/kcl_lib__parser__parser_impl__snapshot_tests__c.snap @@ -3,89 +3,89 @@ source: kcl/src/parser/parser_impl.rs expression: actual --- { - "start": 0, - "end": 35, "body": [ { - "type": "VariableDeclaration", - "type": "VariableDeclaration", - "start": 0, - "end": 35, "declarations": [ { - "type": "VariableDeclarator", - "start": 6, "end": 35, "id": { - "type": "Identifier", - "start": 6, "end": 11, - "name": "myVar" + "name": "myVar", + "start": 6, + "type": "Identifier" }, "init": { - "type": "CallExpression", - "type": "CallExpression", - "start": 14, - "end": 35, - "callee": { - "type": "Identifier", - "start": 14, - "end": 17, - "name": "min" - }, "arguments": [ { - "type": "UnaryExpression", - "type": "UnaryExpression", - "start": 18, - "end": 31, - "operator": "-", "argument": { - "type": "CallExpression", - "type": "CallExpression", - "start": 19, - "end": 31, - "callee": { - "type": "Identifier", - "start": 19, - "end": 25, - "name": "legLen" - }, "arguments": [ { - "type": "Literal", - "type": "Literal", - "start": 26, "end": 27, - "value": 5, - "raw": "5" + "raw": "5", + "start": 26, + "type": "Literal", + "type": "Literal", + "value": 5 }, { - "type": "Literal", - "type": "Literal", - "start": 29, "end": 30, - "value": 4, - "raw": "4" + "raw": "4", + "start": 29, + "type": "Literal", + "type": "Literal", + "value": 4 } ], - "optional": false - } + "callee": { + "end": 25, + "name": "legLen", + "start": 19, + "type": "Identifier" + }, + "end": 31, + "optional": false, + "start": 19, + "type": "CallExpression", + "type": "CallExpression" + }, + "end": 31, + "operator": "-", + "start": 18, + "type": "UnaryExpression", + "type": "UnaryExpression" }, { - "type": "Literal", - "type": "Literal", - "start": 33, "end": 34, - "value": 5, - "raw": "5" + "raw": "5", + "start": 33, + "type": "Literal", + "type": "Literal", + "value": 5 } ], - "optional": false - } + "callee": { + "end": 17, + "name": "min", + "start": 14, + "type": "Identifier" + }, + "end": 35, + "optional": false, + "start": 14, + "type": "CallExpression", + "type": "CallExpression" + }, + "start": 6, + "type": "VariableDeclarator" } ], - "kind": "const" + "end": 35, + "kind": "const", + "start": 0, + "type": "VariableDeclaration", + "type": "VariableDeclaration" } - ] + ], + "end": 35, + "start": 0 } diff --git a/src/wasm-lib/kcl/src/parser/snapshots/kcl_lib__parser__parser_impl__snapshot_tests__d.snap b/src/wasm-lib/kcl/src/parser/snapshots/kcl_lib__parser__parser_impl__snapshot_tests__d.snap index bf9c494f1..a8de2c89c 100644 --- a/src/wasm-lib/kcl/src/parser/snapshots/kcl_lib__parser__parser_impl__snapshot_tests__d.snap +++ b/src/wasm-lib/kcl/src/parser/snapshots/kcl_lib__parser__parser_impl__snapshot_tests__d.snap @@ -3,88 +3,88 @@ source: kcl/src/parser/parser_impl.rs expression: actual --- { - "start": 0, - "end": 36, "body": [ { - "type": "VariableDeclaration", - "type": "VariableDeclaration", - "start": 0, - "end": 36, "declarations": [ { - "type": "VariableDeclarator", - "start": 6, "end": 36, "id": { - "type": "Identifier", - "start": 6, "end": 11, - "name": "myVar" + "name": "myVar", + "start": 6, + "type": "Identifier" }, "init": { - "type": "PipeExpression", - "type": "PipeExpression", - "start": 14, - "end": 36, "body": [ { - "type": "BinaryExpression", - "type": "BinaryExpression", - "start": 14, "end": 19, - "operator": "+", "left": { - "type": "Literal", - "type": "Literal", - "start": 14, "end": 15, - "value": 5, - "raw": "5" + "raw": "5", + "start": 14, + "type": "Literal", + "type": "Literal", + "value": 5 }, + "operator": "+", "right": { - "type": "Literal", - "type": "Literal", - "start": 18, "end": 19, - "value": 6, - "raw": "6" - } + "raw": "6", + "start": 18, + "type": "Literal", + "type": "Literal", + "value": 6 + }, + "start": 14, + "type": "BinaryExpression", + "type": "BinaryExpression" }, { - "type": "CallExpression", - "type": "CallExpression", - "start": 23, - "end": 36, - "callee": { - "type": "Identifier", - "start": 23, - "end": 29, - "name": "myFunc" - }, "arguments": [ { - "type": "Literal", - "type": "Literal", - "start": 30, "end": 32, - "value": 45, - "raw": "45" + "raw": "45", + "start": 30, + "type": "Literal", + "type": "Literal", + "value": 45 }, { - "type": "PipeSubstitution", - "type": "PipeSubstitution", + "end": 35, "start": 34, - "end": 35 + "type": "PipeSubstitution", + "type": "PipeSubstitution" } ], - "optional": false + "callee": { + "end": 29, + "name": "myFunc", + "start": 23, + "type": "Identifier" + }, + "end": 36, + "optional": false, + "start": 23, + "type": "CallExpression", + "type": "CallExpression" } - ] - } + ], + "end": 36, + "start": 14, + "type": "PipeExpression", + "type": "PipeExpression" + }, + "start": 6, + "type": "VariableDeclarator" } ], - "kind": "const" + "end": 36, + "kind": "const", + "start": 0, + "type": "VariableDeclaration", + "type": "VariableDeclaration" } - ] + ], + "end": 36, + "start": 0 } diff --git a/src/wasm-lib/kcl/src/parser/snapshots/kcl_lib__parser__parser_impl__snapshot_tests__d2.snap b/src/wasm-lib/kcl/src/parser/snapshots/kcl_lib__parser__parser_impl__snapshot_tests__d2.snap index 6491695a4..afd750d99 100644 --- a/src/wasm-lib/kcl/src/parser/snapshots/kcl_lib__parser__parser_impl__snapshot_tests__d2.snap +++ b/src/wasm-lib/kcl/src/parser/snapshots/kcl_lib__parser__parser_impl__snapshot_tests__d2.snap @@ -3,56 +3,56 @@ source: kcl/src/parser/parser_impl.rs expression: actual --- { - "start": 0, - "end": 27, "body": [ { - "type": "VariableDeclaration", - "type": "VariableDeclaration", - "start": 0, - "end": 27, "declarations": [ { - "type": "VariableDeclarator", - "start": 6, "end": 27, "id": { - "type": "Identifier", - "start": 6, "end": 7, - "name": "x" + "name": "x", + "start": 6, + "type": "Identifier" }, "init": { - "type": "BinaryExpression", - "type": "BinaryExpression", - "start": 10, "end": 27, - "operator": "+", "left": { - "type": "UnaryExpression", - "type": "UnaryExpression", - "start": 10, + "argument": { + "end": 15, + "name": "leg2", + "start": 11, + "type": "Identifier", + "type": "Identifier" + }, "end": 15, "operator": "-", - "argument": { - "type": "Identifier", - "type": "Identifier", - "start": 11, - "end": 15, - "name": "leg2" - } + "start": 10, + "type": "UnaryExpression", + "type": "UnaryExpression" }, + "operator": "+", "right": { - "type": "Identifier", - "type": "Identifier", - "start": 18, "end": 27, - "name": "thickness" - } - } + "name": "thickness", + "start": 18, + "type": "Identifier", + "type": "Identifier" + }, + "start": 10, + "type": "BinaryExpression", + "type": "BinaryExpression" + }, + "start": 6, + "type": "VariableDeclarator" } ], - "kind": "const" + "end": 27, + "kind": "const", + "start": 0, + "type": "VariableDeclaration", + "type": "VariableDeclaration" } - ] + ], + "end": 27, + "start": 0 } diff --git a/src/wasm-lib/kcl/src/parser/snapshots/kcl_lib__parser__parser_impl__snapshot_tests__e.snap b/src/wasm-lib/kcl/src/parser/snapshots/kcl_lib__parser__parser_impl__snapshot_tests__e.snap index 112a03ee6..b11920a86 100644 --- a/src/wasm-lib/kcl/src/parser/snapshots/kcl_lib__parser__parser_impl__snapshot_tests__e.snap +++ b/src/wasm-lib/kcl/src/parser/snapshots/kcl_lib__parser__parser_impl__snapshot_tests__e.snap @@ -3,66 +3,66 @@ source: kcl/src/parser/parser_impl.rs expression: actual --- { - "start": 0, - "end": 18, "body": [ { - "type": "VariableDeclaration", - "type": "VariableDeclaration", - "start": 0, - "end": 18, "declarations": [ { - "type": "VariableDeclarator", - "start": 4, "end": 18, "id": { - "type": "Identifier", - "start": 4, "end": 5, - "name": "x" + "name": "x", + "start": 4, + "type": "Identifier" }, "init": { - "type": "BinaryExpression", - "type": "BinaryExpression", - "start": 8, "end": 18, - "operator": "*", "left": { - "type": "Literal", - "type": "Literal", - "start": 8, "end": 9, - "value": 1, - "raw": "1" + "raw": "1", + "start": 8, + "type": "Literal", + "type": "Literal", + "value": 1 }, + "operator": "*", "right": { - "type": "BinaryExpression", - "type": "BinaryExpression", - "start": 13, "end": 18, - "operator": "-", "left": { - "type": "Literal", - "type": "Literal", - "start": 13, "end": 14, - "value": 3, - "raw": "3" + "raw": "3", + "start": 13, + "type": "Literal", + "type": "Literal", + "value": 3 }, + "operator": "-", "right": { - "type": "Literal", - "type": "Literal", - "start": 17, "end": 18, - "value": 4, - "raw": "4" - } - } - } + "raw": "4", + "start": 17, + "type": "Literal", + "type": "Literal", + "value": 4 + }, + "start": 13, + "type": "BinaryExpression", + "type": "BinaryExpression" + }, + "start": 8, + "type": "BinaryExpression", + "type": "BinaryExpression" + }, + "start": 4, + "type": "VariableDeclarator" } ], - "kind": "const" + "end": 18, + "kind": "const", + "start": 0, + "type": "VariableDeclaration", + "type": "VariableDeclaration" } - ] + ], + "end": 18, + "start": 0 } diff --git a/src/wasm-lib/kcl/src/parser/snapshots/kcl_lib__parser__parser_impl__snapshot_tests__f.snap b/src/wasm-lib/kcl/src/parser/snapshots/kcl_lib__parser__parser_impl__snapshot_tests__f.snap index 89ef278bb..e9608c3f7 100644 --- a/src/wasm-lib/kcl/src/parser/snapshots/kcl_lib__parser__parser_impl__snapshot_tests__f.snap +++ b/src/wasm-lib/kcl/src/parser/snapshots/kcl_lib__parser__parser_impl__snapshot_tests__f.snap @@ -3,45 +3,44 @@ source: kcl/src/parser/parser_impl.rs expression: actual --- { - "start": 0, - "end": 40, "body": [ { - "type": "VariableDeclaration", - "type": "VariableDeclaration", - "start": 0, - "end": 11, "declarations": [ { - "type": "VariableDeclarator", - "start": 6, "end": 11, "id": { - "type": "Identifier", - "start": 6, "end": 7, - "name": "x" + "name": "x", + "start": 6, + "type": "Identifier" }, "init": { - "type": "Literal", - "type": "Literal", - "start": 10, "end": 11, - "value": 1, - "raw": "1" - } + "raw": "1", + "start": 10, + "type": "Literal", + "type": "Literal", + "value": 1 + }, + "start": 6, + "type": "VariableDeclarator" } ], - "kind": "const" + "end": 11, + "kind": "const", + "start": 0, + "type": "VariableDeclaration", + "type": "VariableDeclaration" } ], + "end": 40, "nonCodeMeta": { "nonCodeNodes": { "0": [ { - "type": "NonCodeNode", - "start": 11, "end": 40, + "start": 11, + "type": "NonCodeNode", "value": { "type": "inlineComment", "value": "this is an inline comment", @@ -50,6 +49,7 @@ expression: actual } ] }, - "start": [] - } + "startNodes": [] + }, + "start": 0 } diff --git a/src/wasm-lib/kcl/src/parser/snapshots/kcl_lib__parser__parser_impl__snapshot_tests__g.snap b/src/wasm-lib/kcl/src/parser/snapshots/kcl_lib__parser__parser_impl__snapshot_tests__g.snap index 6cd8f1424..2a7269487 100644 --- a/src/wasm-lib/kcl/src/parser/snapshots/kcl_lib__parser__parser_impl__snapshot_tests__g.snap +++ b/src/wasm-lib/kcl/src/parser/snapshots/kcl_lib__parser__parser_impl__snapshot_tests__g.snap @@ -3,67 +3,67 @@ source: kcl/src/parser/parser_impl.rs expression: actual --- { - "start": 0, - "end": 58, "body": [ { - "type": "VariableDeclaration", - "type": "VariableDeclaration", - "start": 0, - "end": 58, "declarations": [ { - "type": "VariableDeclarator", - "start": 3, "end": 58, "id": { - "type": "Identifier", - "start": 3, "end": 4, - "name": "x" + "name": "x", + "start": 3, + "type": "Identifier" }, "init": { - "type": "FunctionExpression", - "type": "FunctionExpression", - "start": 7, - "end": 58, - "params": [], "body": { - "start": 13, - "end": 58, "body": [ { - "type": "ReturnStatement", - "type": "ReturnStatement", - "start": 23, - "end": 32, "argument": { - "type": "Identifier", - "type": "Identifier", - "start": 30, "end": 32, - "name": "sg" - } + "name": "sg", + "start": 30, + "type": "Identifier", + "type": "Identifier" + }, + "end": 32, + "start": 23, + "type": "ReturnStatement", + "type": "ReturnStatement" }, { - "type": "ReturnStatement", - "type": "ReturnStatement", - "start": 41, - "end": 50, "argument": { - "type": "Identifier", - "type": "Identifier", - "start": 48, "end": 50, - "name": "sg" - } + "name": "sg", + "start": 48, + "type": "Identifier", + "type": "Identifier" + }, + "end": 50, + "start": 41, + "type": "ReturnStatement", + "type": "ReturnStatement" } - ] - } - } + ], + "end": 58, + "start": 13 + }, + "end": 58, + "params": [], + "start": 7, + "type": "FunctionExpression", + "type": "FunctionExpression" + }, + "start": 3, + "type": "VariableDeclarator" } ], - "kind": "fn" + "end": 58, + "kind": "fn", + "start": 0, + "type": "VariableDeclaration", + "type": "VariableDeclaration" } - ] + ], + "end": 58, + "start": 0 } diff --git a/src/wasm-lib/kcl/src/parser/snapshots/kcl_lib__parser__parser_impl__snapshot_tests__h.snap b/src/wasm-lib/kcl/src/parser/snapshots/kcl_lib__parser__parser_impl__snapshot_tests__h.snap index 53266e6f6..909221053 100644 --- a/src/wasm-lib/kcl/src/parser/snapshots/kcl_lib__parser__parser_impl__snapshot_tests__h.snap +++ b/src/wasm-lib/kcl/src/parser/snapshots/kcl_lib__parser__parser_impl__snapshot_tests__h.snap @@ -3,130 +3,130 @@ source: kcl/src/parser/parser_impl.rs expression: actual --- { - "start": 0, - "end": 55, "body": [ { - "type": "VariableDeclaration", - "type": "VariableDeclaration", - "start": 0, - "end": 26, "declarations": [ { - "type": "VariableDeclarator", - "start": 6, "end": 26, "id": { - "type": "Identifier", - "start": 6, "end": 9, - "name": "obj" + "name": "obj", + "start": 6, + "type": "Identifier" }, "init": { - "type": "ObjectExpression", - "type": "ObjectExpression", - "start": 12, "end": 26, "properties": [ { - "type": "ObjectProperty", - "start": 14, "end": 18, "key": { - "type": "Identifier", - "start": 14, "end": 15, - "name": "a" + "name": "a", + "start": 14, + "type": "Identifier" }, + "start": 14, + "type": "ObjectProperty", "value": { - "type": "Literal", - "type": "Literal", - "start": 17, "end": 18, - "value": 1, - "raw": "1" + "raw": "1", + "start": 17, + "type": "Literal", + "type": "Literal", + "value": 1 } }, { - "type": "ObjectProperty", - "start": 20, "end": 24, "key": { - "type": "Identifier", - "start": 20, "end": 21, - "name": "b" + "name": "b", + "start": 20, + "type": "Identifier" }, + "start": 20, + "type": "ObjectProperty", "value": { - "type": "Literal", - "type": "Literal", - "start": 23, "end": 24, - "value": 2, - "raw": "2" + "raw": "2", + "start": 23, + "type": "Literal", + "type": "Literal", + "value": 2 } } - ] - } + ], + "start": 12, + "type": "ObjectExpression", + "type": "ObjectExpression" + }, + "start": 6, + "type": "VariableDeclarator" } ], - "kind": "const" + "end": 26, + "kind": "const", + "start": 0, + "type": "VariableDeclaration", + "type": "VariableDeclaration" }, { - "type": "VariableDeclaration", - "type": "VariableDeclaration", - "start": 31, - "end": 55, "declarations": [ { - "type": "VariableDeclarator", - "start": 37, "end": 55, "id": { - "type": "Identifier", - "start": 37, "end": 43, - "name": "height" + "name": "height", + "start": 37, + "type": "Identifier" }, "init": { - "type": "BinaryExpression", - "type": "BinaryExpression", - "start": 46, "end": 55, - "operator": "-", "left": { - "type": "Literal", - "type": "Literal", - "start": 46, "end": 47, - "value": 1, - "raw": "1" + "raw": "1", + "start": 46, + "type": "Literal", + "type": "Literal", + "value": 1 }, + "operator": "-", "right": { - "type": "MemberExpression", - "type": "MemberExpression", - "start": 50, + "computed": false, "end": 55, "object": { - "type": "Identifier", - "type": "Identifier", - "start": 50, "end": 53, - "name": "obj" + "name": "obj", + "start": 50, + "type": "Identifier", + "type": "Identifier" }, "property": { - "type": "Identifier", - "type": "Identifier", - "start": 54, "end": 55, - "name": "a" + "name": "a", + "start": 54, + "type": "Identifier", + "type": "Identifier" }, - "computed": false - } - } + "start": 50, + "type": "MemberExpression", + "type": "MemberExpression" + }, + "start": 46, + "type": "BinaryExpression", + "type": "BinaryExpression" + }, + "start": 37, + "type": "VariableDeclarator" } ], - "kind": "const" + "end": 55, + "kind": "const", + "start": 31, + "type": "VariableDeclaration", + "type": "VariableDeclaration" } - ] + ], + "end": 55, + "start": 0 } diff --git a/src/wasm-lib/kcl/src/parser/snapshots/kcl_lib__parser__parser_impl__snapshot_tests__i.snap b/src/wasm-lib/kcl/src/parser/snapshots/kcl_lib__parser__parser_impl__snapshot_tests__i.snap index 1941a0f05..e348e7d25 100644 --- a/src/wasm-lib/kcl/src/parser/snapshots/kcl_lib__parser__parser_impl__snapshot_tests__i.snap +++ b/src/wasm-lib/kcl/src/parser/snapshots/kcl_lib__parser__parser_impl__snapshot_tests__i.snap @@ -3,131 +3,131 @@ source: kcl/src/parser/parser_impl.rs expression: actual --- { - "start": 0, - "end": 59, "body": [ { - "type": "VariableDeclaration", - "type": "VariableDeclaration", - "start": 0, - "end": 26, "declarations": [ { - "type": "VariableDeclarator", - "start": 6, "end": 26, "id": { - "type": "Identifier", - "start": 6, "end": 9, - "name": "obj" + "name": "obj", + "start": 6, + "type": "Identifier" }, "init": { - "type": "ObjectExpression", - "type": "ObjectExpression", - "start": 12, "end": 26, "properties": [ { - "type": "ObjectProperty", - "start": 14, "end": 18, "key": { - "type": "Identifier", - "start": 14, "end": 15, - "name": "a" + "name": "a", + "start": 14, + "type": "Identifier" }, + "start": 14, + "type": "ObjectProperty", "value": { - "type": "Literal", - "type": "Literal", - "start": 17, "end": 18, - "value": 1, - "raw": "1" + "raw": "1", + "start": 17, + "type": "Literal", + "type": "Literal", + "value": 1 } }, { - "type": "ObjectProperty", - "start": 20, "end": 24, "key": { - "type": "Identifier", - "start": 20, "end": 21, - "name": "b" + "name": "b", + "start": 20, + "type": "Identifier" }, + "start": 20, + "type": "ObjectProperty", "value": { - "type": "Literal", - "type": "Literal", - "start": 23, "end": 24, - "value": 2, - "raw": "2" + "raw": "2", + "start": 23, + "type": "Literal", + "type": "Literal", + "value": 2 } } - ] - } + ], + "start": 12, + "type": "ObjectExpression", + "type": "ObjectExpression" + }, + "start": 6, + "type": "VariableDeclarator" } ], - "kind": "const" + "end": 26, + "kind": "const", + "start": 0, + "type": "VariableDeclaration", + "type": "VariableDeclaration" }, { - "type": "VariableDeclaration", - "type": "VariableDeclaration", - "start": 32, - "end": 59, "declarations": [ { - "type": "VariableDeclarator", - "start": 38, "end": 59, "id": { - "type": "Identifier", - "start": 38, "end": 44, - "name": "height" + "name": "height", + "start": 38, + "type": "Identifier" }, "init": { - "type": "BinaryExpression", - "type": "BinaryExpression", - "start": 47, "end": 59, - "operator": "-", "left": { - "type": "Literal", - "type": "Literal", - "start": 47, "end": 48, - "value": 1, - "raw": "1" + "raw": "1", + "start": 47, + "type": "Literal", + "type": "Literal", + "value": 1 }, + "operator": "-", "right": { - "type": "MemberExpression", - "type": "MemberExpression", - "start": 51, + "computed": false, "end": 59, "object": { - "type": "Identifier", - "type": "Identifier", - "start": 51, "end": 54, - "name": "obj" + "name": "obj", + "start": 51, + "type": "Identifier", + "type": "Identifier" }, "property": { - "type": "Literal", - "type": "Literal", - "start": 55, "end": 58, - "value": "a", - "raw": "\"a\"" + "raw": "\"a\"", + "start": 55, + "type": "Literal", + "type": "Literal", + "value": "a" }, - "computed": false - } - } + "start": 51, + "type": "MemberExpression", + "type": "MemberExpression" + }, + "start": 47, + "type": "BinaryExpression", + "type": "BinaryExpression" + }, + "start": 38, + "type": "VariableDeclarator" } ], - "kind": "const" + "end": 59, + "kind": "const", + "start": 32, + "type": "VariableDeclaration", + "type": "VariableDeclaration" } - ] + ], + "end": 59, + "start": 0 } diff --git a/src/wasm-lib/kcl/src/parser/snapshots/kcl_lib__parser__parser_impl__snapshot_tests__j.snap b/src/wasm-lib/kcl/src/parser/snapshots/kcl_lib__parser__parser_impl__snapshot_tests__j.snap index 33f2471c5..70ec94c42 100644 --- a/src/wasm-lib/kcl/src/parser/snapshots/kcl_lib__parser__parser_impl__snapshot_tests__j.snap +++ b/src/wasm-lib/kcl/src/parser/snapshots/kcl_lib__parser__parser_impl__snapshot_tests__j.snap @@ -3,131 +3,131 @@ source: kcl/src/parser/parser_impl.rs expression: actual --- { - "start": 0, - "end": 58, "body": [ { - "type": "VariableDeclaration", - "type": "VariableDeclaration", - "start": 0, - "end": 26, "declarations": [ { - "type": "VariableDeclarator", - "start": 6, "end": 26, "id": { - "type": "Identifier", - "start": 6, "end": 9, - "name": "obj" + "name": "obj", + "start": 6, + "type": "Identifier" }, "init": { - "type": "ObjectExpression", - "type": "ObjectExpression", - "start": 12, "end": 26, "properties": [ { - "type": "ObjectProperty", - "start": 14, "end": 18, "key": { - "type": "Identifier", - "start": 14, "end": 15, - "name": "a" + "name": "a", + "start": 14, + "type": "Identifier" }, + "start": 14, + "type": "ObjectProperty", "value": { - "type": "Literal", - "type": "Literal", - "start": 17, "end": 18, - "value": 1, - "raw": "1" + "raw": "1", + "start": 17, + "type": "Literal", + "type": "Literal", + "value": 1 } }, { - "type": "ObjectProperty", - "start": 20, "end": 24, "key": { - "type": "Identifier", - "start": 20, "end": 21, - "name": "b" + "name": "b", + "start": 20, + "type": "Identifier" }, + "start": 20, + "type": "ObjectProperty", "value": { - "type": "Literal", - "type": "Literal", - "start": 23, "end": 24, - "value": 2, - "raw": "2" + "raw": "2", + "start": 23, + "type": "Literal", + "type": "Literal", + "value": 2 } } - ] - } + ], + "start": 12, + "type": "ObjectExpression", + "type": "ObjectExpression" + }, + "start": 6, + "type": "VariableDeclarator" } ], - "kind": "const" + "end": 26, + "kind": "const", + "start": 0, + "type": "VariableDeclaration", + "type": "VariableDeclaration" }, { - "type": "VariableDeclaration", - "type": "VariableDeclaration", - "start": 31, - "end": 58, "declarations": [ { - "type": "VariableDeclarator", - "start": 37, "end": 58, "id": { - "type": "Identifier", - "start": 37, "end": 43, - "name": "height" + "name": "height", + "start": 37, + "type": "Identifier" }, "init": { - "type": "BinaryExpression", - "type": "BinaryExpression", - "start": 46, "end": 58, - "operator": "-", "left": { - "type": "MemberExpression", - "type": "MemberExpression", - "start": 46, + "computed": false, "end": 54, "object": { - "type": "Identifier", - "type": "Identifier", - "start": 46, "end": 49, - "name": "obj" + "name": "obj", + "start": 46, + "type": "Identifier", + "type": "Identifier" }, "property": { - "type": "Literal", - "type": "Literal", - "start": 50, "end": 53, - "value": "a", - "raw": "\"a\"" + "raw": "\"a\"", + "start": 50, + "type": "Literal", + "type": "Literal", + "value": "a" }, - "computed": false + "start": 46, + "type": "MemberExpression", + "type": "MemberExpression" }, + "operator": "-", "right": { - "type": "Literal", - "type": "Literal", - "start": 57, "end": 58, - "value": 1, - "raw": "1" - } - } + "raw": "1", + "start": 57, + "type": "Literal", + "type": "Literal", + "value": 1 + }, + "start": 46, + "type": "BinaryExpression", + "type": "BinaryExpression" + }, + "start": 37, + "type": "VariableDeclarator" } ], - "kind": "const" + "end": 58, + "kind": "const", + "start": 31, + "type": "VariableDeclaration", + "type": "VariableDeclaration" } - ] + ], + "end": 58, + "start": 0 } diff --git a/src/wasm-lib/kcl/src/parser/snapshots/kcl_lib__parser__parser_impl__snapshot_tests__k.snap b/src/wasm-lib/kcl/src/parser/snapshots/kcl_lib__parser__parser_impl__snapshot_tests__k.snap index 8b121009b..a5b9e8f5a 100644 --- a/src/wasm-lib/kcl/src/parser/snapshots/kcl_lib__parser__parser_impl__snapshot_tests__k.snap +++ b/src/wasm-lib/kcl/src/parser/snapshots/kcl_lib__parser__parser_impl__snapshot_tests__k.snap @@ -3,147 +3,147 @@ source: kcl/src/parser/parser_impl.rs expression: actual --- { - "start": 0, - "end": 63, "body": [ { - "type": "VariableDeclaration", - "type": "VariableDeclaration", - "start": 0, - "end": 26, "declarations": [ { - "type": "VariableDeclarator", - "start": 6, "end": 26, "id": { - "type": "Identifier", - "start": 6, "end": 9, - "name": "obj" + "name": "obj", + "start": 6, + "type": "Identifier" }, "init": { - "type": "ObjectExpression", - "type": "ObjectExpression", - "start": 12, "end": 26, "properties": [ { - "type": "ObjectProperty", - "start": 14, "end": 18, "key": { - "type": "Identifier", - "start": 14, "end": 15, - "name": "a" + "name": "a", + "start": 14, + "type": "Identifier" }, + "start": 14, + "type": "ObjectProperty", "value": { - "type": "Literal", - "type": "Literal", - "start": 17, "end": 18, - "value": 1, - "raw": "1" + "raw": "1", + "start": 17, + "type": "Literal", + "type": "Literal", + "value": 1 } }, { - "type": "ObjectProperty", - "start": 20, "end": 24, "key": { - "type": "Identifier", - "start": 20, "end": 21, - "name": "b" + "name": "b", + "start": 20, + "type": "Identifier" }, + "start": 20, + "type": "ObjectProperty", "value": { - "type": "Literal", - "type": "Literal", - "start": 23, "end": 24, - "value": 2, - "raw": "2" + "raw": "2", + "start": 23, + "type": "Literal", + "type": "Literal", + "value": 2 } } - ] - } + ], + "start": 12, + "type": "ObjectExpression", + "type": "ObjectExpression" + }, + "start": 6, + "type": "VariableDeclarator" } ], - "kind": "const" + "end": 26, + "kind": "const", + "start": 0, + "type": "VariableDeclaration", + "type": "VariableDeclaration" }, { - "type": "VariableDeclaration", - "type": "VariableDeclaration", - "start": 31, - "end": 63, "declarations": [ { - "type": "VariableDeclarator", - "start": 37, "end": 63, "id": { - "type": "Identifier", - "start": 37, "end": 43, - "name": "height" + "name": "height", + "start": 37, + "type": "Identifier" }, "init": { - "type": "ArrayExpression", - "type": "ArrayExpression", - "start": 46, - "end": 63, "elements": [ { - "type": "BinaryExpression", - "type": "BinaryExpression", - "start": 47, "end": 59, - "operator": "-", "left": { - "type": "Literal", - "type": "Literal", - "start": 47, "end": 48, - "value": 1, - "raw": "1" + "raw": "1", + "start": 47, + "type": "Literal", + "type": "Literal", + "value": 1 }, + "operator": "-", "right": { - "type": "MemberExpression", - "type": "MemberExpression", - "start": 51, + "computed": false, "end": 59, "object": { - "type": "Identifier", - "type": "Identifier", - "start": 51, "end": 54, - "name": "obj" + "name": "obj", + "start": 51, + "type": "Identifier", + "type": "Identifier" }, "property": { - "type": "Literal", - "type": "Literal", - "start": 55, "end": 58, - "value": "a", - "raw": "\"a\"" + "raw": "\"a\"", + "start": 55, + "type": "Literal", + "type": "Literal", + "value": "a" }, - "computed": false - } + "start": 51, + "type": "MemberExpression", + "type": "MemberExpression" + }, + "start": 47, + "type": "BinaryExpression", + "type": "BinaryExpression" }, { - "type": "Literal", - "type": "Literal", - "start": 61, "end": 62, - "value": 0, - "raw": "0" + "raw": "0", + "start": 61, + "type": "Literal", + "type": "Literal", + "value": 0 } - ] - } + ], + "end": 63, + "start": 46, + "type": "ArrayExpression", + "type": "ArrayExpression" + }, + "start": 37, + "type": "VariableDeclarator" } ], - "kind": "const" + "end": 63, + "kind": "const", + "start": 31, + "type": "VariableDeclaration", + "type": "VariableDeclaration" } - ] + ], + "end": 63, + "start": 0 } diff --git a/src/wasm-lib/kcl/src/parser/snapshots/kcl_lib__parser__parser_impl__snapshot_tests__l.snap b/src/wasm-lib/kcl/src/parser/snapshots/kcl_lib__parser__parser_impl__snapshot_tests__l.snap index 025500972..6781f3e4d 100644 --- a/src/wasm-lib/kcl/src/parser/snapshots/kcl_lib__parser__parser_impl__snapshot_tests__l.snap +++ b/src/wasm-lib/kcl/src/parser/snapshots/kcl_lib__parser__parser_impl__snapshot_tests__l.snap @@ -3,147 +3,147 @@ source: kcl/src/parser/parser_impl.rs expression: actual --- { - "start": 0, - "end": 63, "body": [ { - "type": "VariableDeclaration", - "type": "VariableDeclaration", - "start": 0, - "end": 26, "declarations": [ { - "type": "VariableDeclarator", - "start": 6, "end": 26, "id": { - "type": "Identifier", - "start": 6, "end": 9, - "name": "obj" + "name": "obj", + "start": 6, + "type": "Identifier" }, "init": { - "type": "ObjectExpression", - "type": "ObjectExpression", - "start": 12, "end": 26, "properties": [ { - "type": "ObjectProperty", - "start": 14, "end": 18, "key": { - "type": "Identifier", - "start": 14, "end": 15, - "name": "a" + "name": "a", + "start": 14, + "type": "Identifier" }, + "start": 14, + "type": "ObjectProperty", "value": { - "type": "Literal", - "type": "Literal", - "start": 17, "end": 18, - "value": 1, - "raw": "1" + "raw": "1", + "start": 17, + "type": "Literal", + "type": "Literal", + "value": 1 } }, { - "type": "ObjectProperty", - "start": 20, "end": 24, "key": { - "type": "Identifier", - "start": 20, "end": 21, - "name": "b" + "name": "b", + "start": 20, + "type": "Identifier" }, + "start": 20, + "type": "ObjectProperty", "value": { - "type": "Literal", - "type": "Literal", - "start": 23, "end": 24, - "value": 2, - "raw": "2" + "raw": "2", + "start": 23, + "type": "Literal", + "type": "Literal", + "value": 2 } } - ] - } + ], + "start": 12, + "type": "ObjectExpression", + "type": "ObjectExpression" + }, + "start": 6, + "type": "VariableDeclarator" } ], - "kind": "const" + "end": 26, + "kind": "const", + "start": 0, + "type": "VariableDeclaration", + "type": "VariableDeclaration" }, { - "type": "VariableDeclaration", - "type": "VariableDeclaration", - "start": 31, - "end": 63, "declarations": [ { - "type": "VariableDeclarator", - "start": 37, "end": 63, "id": { - "type": "Identifier", - "start": 37, "end": 43, - "name": "height" + "name": "height", + "start": 37, + "type": "Identifier" }, "init": { - "type": "ArrayExpression", - "type": "ArrayExpression", - "start": 46, - "end": 63, "elements": [ { - "type": "BinaryExpression", - "type": "BinaryExpression", - "start": 47, "end": 59, - "operator": "-", "left": { - "type": "MemberExpression", - "type": "MemberExpression", - "start": 47, + "computed": false, "end": 55, "object": { - "type": "Identifier", - "type": "Identifier", - "start": 47, "end": 50, - "name": "obj" + "name": "obj", + "start": 47, + "type": "Identifier", + "type": "Identifier" }, "property": { - "type": "Literal", - "type": "Literal", - "start": 51, "end": 54, - "value": "a", - "raw": "\"a\"" + "raw": "\"a\"", + "start": 51, + "type": "Literal", + "type": "Literal", + "value": "a" }, - "computed": false + "start": 47, + "type": "MemberExpression", + "type": "MemberExpression" }, + "operator": "-", "right": { - "type": "Literal", - "type": "Literal", - "start": 58, "end": 59, - "value": 1, - "raw": "1" - } + "raw": "1", + "start": 58, + "type": "Literal", + "type": "Literal", + "value": 1 + }, + "start": 47, + "type": "BinaryExpression", + "type": "BinaryExpression" }, { - "type": "Literal", - "type": "Literal", - "start": 61, "end": 62, - "value": 0, - "raw": "0" + "raw": "0", + "start": 61, + "type": "Literal", + "type": "Literal", + "value": 0 } - ] - } + ], + "end": 63, + "start": 46, + "type": "ArrayExpression", + "type": "ArrayExpression" + }, + "start": 37, + "type": "VariableDeclarator" } ], - "kind": "const" + "end": 63, + "kind": "const", + "start": 31, + "type": "VariableDeclaration", + "type": "VariableDeclaration" } - ] + ], + "end": 63, + "start": 0 } diff --git a/src/wasm-lib/kcl/src/parser/snapshots/kcl_lib__parser__parser_impl__snapshot_tests__m.snap b/src/wasm-lib/kcl/src/parser/snapshots/kcl_lib__parser__parser_impl__snapshot_tests__m.snap index ae0c54f37..df9258851 100644 --- a/src/wasm-lib/kcl/src/parser/snapshots/kcl_lib__parser__parser_impl__snapshot_tests__m.snap +++ b/src/wasm-lib/kcl/src/parser/snapshots/kcl_lib__parser__parser_impl__snapshot_tests__m.snap @@ -3,147 +3,147 @@ source: kcl/src/parser/parser_impl.rs expression: actual --- { - "start": 0, - "end": 62, "body": [ { - "type": "VariableDeclaration", - "type": "VariableDeclaration", - "start": 0, - "end": 26, "declarations": [ { - "type": "VariableDeclarator", - "start": 6, "end": 26, "id": { - "type": "Identifier", - "start": 6, "end": 9, - "name": "obj" + "name": "obj", + "start": 6, + "type": "Identifier" }, "init": { - "type": "ObjectExpression", - "type": "ObjectExpression", - "start": 12, "end": 26, "properties": [ { - "type": "ObjectProperty", - "start": 14, "end": 18, "key": { - "type": "Identifier", - "start": 14, "end": 15, - "name": "a" + "name": "a", + "start": 14, + "type": "Identifier" }, + "start": 14, + "type": "ObjectProperty", "value": { - "type": "Literal", - "type": "Literal", - "start": 17, "end": 18, - "value": 1, - "raw": "1" + "raw": "1", + "start": 17, + "type": "Literal", + "type": "Literal", + "value": 1 } }, { - "type": "ObjectProperty", - "start": 20, "end": 24, "key": { - "type": "Identifier", - "start": 20, "end": 21, - "name": "b" + "name": "b", + "start": 20, + "type": "Identifier" }, + "start": 20, + "type": "ObjectProperty", "value": { - "type": "Literal", - "type": "Literal", - "start": 23, "end": 24, - "value": 2, - "raw": "2" + "raw": "2", + "start": 23, + "type": "Literal", + "type": "Literal", + "value": 2 } } - ] - } + ], + "start": 12, + "type": "ObjectExpression", + "type": "ObjectExpression" + }, + "start": 6, + "type": "VariableDeclarator" } ], - "kind": "const" + "end": 26, + "kind": "const", + "start": 0, + "type": "VariableDeclaration", + "type": "VariableDeclaration" }, { - "type": "VariableDeclaration", - "type": "VariableDeclaration", - "start": 31, - "end": 62, "declarations": [ { - "type": "VariableDeclarator", - "start": 37, "end": 62, "id": { - "type": "Identifier", - "start": 37, "end": 43, - "name": "height" + "name": "height", + "start": 37, + "type": "Identifier" }, "init": { - "type": "ArrayExpression", - "type": "ArrayExpression", - "start": 46, - "end": 62, "elements": [ { - "type": "BinaryExpression", - "type": "BinaryExpression", - "start": 47, "end": 58, - "operator": "-", "left": { - "type": "MemberExpression", - "type": "MemberExpression", - "start": 47, + "computed": false, "end": 55, "object": { - "type": "Identifier", - "type": "Identifier", - "start": 47, "end": 50, - "name": "obj" + "name": "obj", + "start": 47, + "type": "Identifier", + "type": "Identifier" }, "property": { - "type": "Literal", - "type": "Literal", - "start": 51, "end": 54, - "value": "a", - "raw": "\"a\"" + "raw": "\"a\"", + "start": 51, + "type": "Literal", + "type": "Literal", + "value": "a" }, - "computed": false + "start": 47, + "type": "MemberExpression", + "type": "MemberExpression" }, + "operator": "-", "right": { - "type": "Literal", - "type": "Literal", - "start": 57, "end": 58, - "value": 1, - "raw": "1" - } + "raw": "1", + "start": 57, + "type": "Literal", + "type": "Literal", + "value": 1 + }, + "start": 47, + "type": "BinaryExpression", + "type": "BinaryExpression" }, { - "type": "Literal", - "type": "Literal", - "start": 60, "end": 61, - "value": 0, - "raw": "0" + "raw": "0", + "start": 60, + "type": "Literal", + "type": "Literal", + "value": 0 } - ] - } + ], + "end": 62, + "start": 46, + "type": "ArrayExpression", + "type": "ArrayExpression" + }, + "start": 37, + "type": "VariableDeclarator" } ], - "kind": "const" + "end": 62, + "kind": "const", + "start": 31, + "type": "VariableDeclaration", + "type": "VariableDeclaration" } - ] + ], + "end": 62, + "start": 0 } diff --git a/src/wasm-lib/kcl/src/parser/snapshots/kcl_lib__parser__parser_impl__snapshot_tests__n.snap b/src/wasm-lib/kcl/src/parser/snapshots/kcl_lib__parser__parser_impl__snapshot_tests__n.snap index 950ea3821..2e194c1f8 100644 --- a/src/wasm-lib/kcl/src/parser/snapshots/kcl_lib__parser__parser_impl__snapshot_tests__n.snap +++ b/src/wasm-lib/kcl/src/parser/snapshots/kcl_lib__parser__parser_impl__snapshot_tests__n.snap @@ -3,64 +3,64 @@ source: kcl/src/parser/parser_impl.rs expression: actual --- { - "start": 0, - "end": 24, "body": [ { - "type": "VariableDeclaration", - "type": "VariableDeclaration", - "start": 0, - "end": 24, "declarations": [ { - "type": "VariableDeclarator", - "start": 6, "end": 24, "id": { - "type": "Identifier", - "start": 6, "end": 12, - "name": "height" + "name": "height", + "start": 6, + "type": "Identifier" }, "init": { - "type": "BinaryExpression", - "type": "BinaryExpression", - "start": 15, "end": 24, - "operator": "-", "left": { - "type": "Literal", - "type": "Literal", - "start": 15, "end": 16, - "value": 1, - "raw": "1" + "raw": "1", + "start": 15, + "type": "Literal", + "type": "Literal", + "value": 1 }, + "operator": "-", "right": { - "type": "MemberExpression", - "type": "MemberExpression", - "start": 19, + "computed": false, "end": 24, "object": { - "type": "Identifier", - "type": "Identifier", - "start": 19, "end": 22, - "name": "obj" + "name": "obj", + "start": 19, + "type": "Identifier", + "type": "Identifier" }, "property": { - "type": "Identifier", - "type": "Identifier", - "start": 23, "end": 24, - "name": "a" + "name": "a", + "start": 23, + "type": "Identifier", + "type": "Identifier" }, - "computed": false - } - } + "start": 19, + "type": "MemberExpression", + "type": "MemberExpression" + }, + "start": 15, + "type": "BinaryExpression", + "type": "BinaryExpression" + }, + "start": 6, + "type": "VariableDeclarator" } ], - "kind": "const" + "end": 24, + "kind": "const", + "start": 0, + "type": "VariableDeclaration", + "type": "VariableDeclaration" } - ] + ], + "end": 24, + "start": 0 } diff --git a/src/wasm-lib/kcl/src/parser/snapshots/kcl_lib__parser__parser_impl__snapshot_tests__o.snap b/src/wasm-lib/kcl/src/parser/snapshots/kcl_lib__parser__parser_impl__snapshot_tests__o.snap index 6f8d4ecd2..47c66b9cc 100644 --- a/src/wasm-lib/kcl/src/parser/snapshots/kcl_lib__parser__parser_impl__snapshot_tests__o.snap +++ b/src/wasm-lib/kcl/src/parser/snapshots/kcl_lib__parser__parser_impl__snapshot_tests__o.snap @@ -3,66 +3,66 @@ source: kcl/src/parser/parser_impl.rs expression: actual --- { - "start": 0, - "end": 21, "body": [ { - "type": "VariableDeclaration", - "type": "VariableDeclaration", - "start": 0, - "end": 21, "declarations": [ { - "type": "VariableDeclarator", - "start": 6, "end": 21, "id": { - "type": "Identifier", - "start": 6, "end": 9, - "name": "six" + "name": "six", + "start": 6, + "type": "Identifier" }, "init": { - "type": "BinaryExpression", - "type": "BinaryExpression", - "start": 12, "end": 21, - "operator": "+", "left": { - "type": "BinaryExpression", - "type": "BinaryExpression", - "start": 12, "end": 17, - "operator": "+", "left": { - "type": "Literal", - "type": "Literal", - "start": 12, "end": 13, - "value": 1, - "raw": "1" + "raw": "1", + "start": 12, + "type": "Literal", + "type": "Literal", + "value": 1 }, + "operator": "+", "right": { - "type": "Literal", - "type": "Literal", - "start": 16, "end": 17, - "value": 2, - "raw": "2" - } + "raw": "2", + "start": 16, + "type": "Literal", + "type": "Literal", + "value": 2 + }, + "start": 12, + "type": "BinaryExpression", + "type": "BinaryExpression" }, + "operator": "+", "right": { - "type": "Literal", - "type": "Literal", - "start": 20, "end": 21, - "value": 3, - "raw": "3" - } - } + "raw": "3", + "start": 20, + "type": "Literal", + "type": "Literal", + "value": 3 + }, + "start": 12, + "type": "BinaryExpression", + "type": "BinaryExpression" + }, + "start": 6, + "type": "VariableDeclarator" } ], - "kind": "const" + "end": 21, + "kind": "const", + "start": 0, + "type": "VariableDeclaration", + "type": "VariableDeclaration" } - ] + ], + "end": 21, + "start": 0 } diff --git a/src/wasm-lib/kcl/src/parser/snapshots/kcl_lib__parser__parser_impl__snapshot_tests__p.snap b/src/wasm-lib/kcl/src/parser/snapshots/kcl_lib__parser__parser_impl__snapshot_tests__p.snap index fe39368e2..6802bdc53 100644 --- a/src/wasm-lib/kcl/src/parser/snapshots/kcl_lib__parser__parser_impl__snapshot_tests__p.snap +++ b/src/wasm-lib/kcl/src/parser/snapshots/kcl_lib__parser__parser_impl__snapshot_tests__p.snap @@ -3,66 +3,66 @@ source: kcl/src/parser/parser_impl.rs expression: actual --- { - "start": 0, - "end": 22, "body": [ { - "type": "VariableDeclaration", - "type": "VariableDeclaration", - "start": 0, - "end": 22, "declarations": [ { - "type": "VariableDeclarator", - "start": 6, "end": 22, "id": { - "type": "Identifier", - "start": 6, "end": 10, - "name": "five" + "name": "five", + "start": 6, + "type": "Identifier" }, "init": { - "type": "BinaryExpression", - "type": "BinaryExpression", - "start": 13, "end": 22, - "operator": "+", "left": { - "type": "BinaryExpression", - "type": "BinaryExpression", - "start": 13, "end": 18, - "operator": "*", "left": { - "type": "Literal", - "type": "Literal", - "start": 13, "end": 14, - "value": 3, - "raw": "3" + "raw": "3", + "start": 13, + "type": "Literal", + "type": "Literal", + "value": 3 }, + "operator": "*", "right": { - "type": "Literal", - "type": "Literal", - "start": 17, "end": 18, - "value": 1, - "raw": "1" - } + "raw": "1", + "start": 17, + "type": "Literal", + "type": "Literal", + "value": 1 + }, + "start": 13, + "type": "BinaryExpression", + "type": "BinaryExpression" }, + "operator": "+", "right": { - "type": "Literal", - "type": "Literal", - "start": 21, "end": 22, - "value": 2, - "raw": "2" - } - } + "raw": "2", + "start": 21, + "type": "Literal", + "type": "Literal", + "value": 2 + }, + "start": 13, + "type": "BinaryExpression", + "type": "BinaryExpression" + }, + "start": 6, + "type": "VariableDeclarator" } ], - "kind": "const" + "end": 22, + "kind": "const", + "start": 0, + "type": "VariableDeclaration", + "type": "VariableDeclaration" } - ] + ], + "end": 22, + "start": 0 } diff --git a/src/wasm-lib/kcl/src/parser/snapshots/kcl_lib__parser__parser_impl__snapshot_tests__q.snap b/src/wasm-lib/kcl/src/parser/snapshots/kcl_lib__parser__parser_impl__snapshot_tests__q.snap index 988bd42e8..1951dcf4d 100644 --- a/src/wasm-lib/kcl/src/parser/snapshots/kcl_lib__parser__parser_impl__snapshot_tests__q.snap +++ b/src/wasm-lib/kcl/src/parser/snapshots/kcl_lib__parser__parser_impl__snapshot_tests__q.snap @@ -3,66 +3,66 @@ source: kcl/src/parser/parser_impl.rs expression: actual --- { - "start": 0, - "end": 30, "body": [ { - "type": "VariableDeclaration", - "type": "VariableDeclaration", - "start": 0, - "end": 30, "declarations": [ { - "type": "VariableDeclarator", - "start": 6, "end": 30, "id": { - "type": "Identifier", - "start": 6, "end": 12, - "name": "height" + "name": "height", + "start": 6, + "type": "Identifier" }, "init": { - "type": "ArrayExpression", - "type": "ArrayExpression", - "start": 15, - "end": 30, "elements": [ { - "type": "MemberExpression", - "type": "MemberExpression", - "start": 17, + "computed": false, "end": 25, "object": { - "type": "Identifier", - "type": "Identifier", - "start": 17, "end": 20, - "name": "obj" + "name": "obj", + "start": 17, + "type": "Identifier", + "type": "Identifier" }, "property": { - "type": "Literal", - "type": "Literal", - "start": 21, "end": 24, - "value": "a", - "raw": "\"a\"" + "raw": "\"a\"", + "start": 21, + "type": "Literal", + "type": "Literal", + "value": "a" }, - "computed": false + "start": 17, + "type": "MemberExpression", + "type": "MemberExpression" }, { - "type": "Literal", - "type": "Literal", - "start": 27, "end": 28, - "value": 0, - "raw": "0" + "raw": "0", + "start": 27, + "type": "Literal", + "type": "Literal", + "value": 0 } - ] - } + ], + "end": 30, + "start": 15, + "type": "ArrayExpression", + "type": "ArrayExpression" + }, + "start": 6, + "type": "VariableDeclarator" } ], - "kind": "const" + "end": 30, + "kind": "const", + "start": 0, + "type": "VariableDeclaration", + "type": "VariableDeclaration" } - ] + ], + "end": 30, + "start": 0 } diff --git a/src/wasm-lib/kcl/src/parser/snapshots/kcl_lib__parser__parser_impl__snapshot_tests__r.snap b/src/wasm-lib/kcl/src/parser/snapshots/kcl_lib__parser__parser_impl__snapshot_tests__r.snap index dcd81fc02..c6ab62448 100644 --- a/src/wasm-lib/kcl/src/parser/snapshots/kcl_lib__parser__parser_impl__snapshot_tests__r.snap +++ b/src/wasm-lib/kcl/src/parser/snapshots/kcl_lib__parser__parser_impl__snapshot_tests__r.snap @@ -3,116 +3,116 @@ source: kcl/src/parser/parser_impl.rs expression: actual --- { - "start": 0, - "end": 54, "body": [ { - "type": "VariableDeclaration", - "type": "VariableDeclaration", - "start": 0, - "end": 26, "declarations": [ { - "type": "VariableDeclarator", - "start": 6, "end": 26, "id": { - "type": "Identifier", - "start": 6, "end": 9, - "name": "obj" + "name": "obj", + "start": 6, + "type": "Identifier" }, "init": { - "type": "ObjectExpression", - "type": "ObjectExpression", - "start": 12, "end": 26, "properties": [ { - "type": "ObjectProperty", - "start": 14, "end": 18, "key": { - "type": "Identifier", - "start": 14, "end": 15, - "name": "a" + "name": "a", + "start": 14, + "type": "Identifier" }, + "start": 14, + "type": "ObjectProperty", "value": { - "type": "Literal", - "type": "Literal", - "start": 17, "end": 18, - "value": 1, - "raw": "1" + "raw": "1", + "start": 17, + "type": "Literal", + "type": "Literal", + "value": 1 } }, { - "type": "ObjectProperty", - "start": 20, "end": 24, "key": { - "type": "Identifier", - "start": 20, "end": 21, - "name": "b" + "name": "b", + "start": 20, + "type": "Identifier" }, + "start": 20, + "type": "ObjectProperty", "value": { - "type": "Literal", - "type": "Literal", - "start": 23, "end": 24, - "value": 2, - "raw": "2" + "raw": "2", + "start": 23, + "type": "Literal", + "type": "Literal", + "value": 2 } } - ] - } + ], + "start": 12, + "type": "ObjectExpression", + "type": "ObjectExpression" + }, + "start": 6, + "type": "VariableDeclarator" } ], - "kind": "const" + "end": 26, + "kind": "const", + "start": 0, + "type": "VariableDeclaration", + "type": "VariableDeclaration" }, { - "type": "VariableDeclaration", - "type": "VariableDeclaration", - "start": 31, - "end": 54, "declarations": [ { - "type": "VariableDeclarator", - "start": 37, "end": 54, "id": { - "type": "Identifier", - "start": 37, "end": 43, - "name": "height" + "name": "height", + "start": 37, + "type": "Identifier" }, "init": { - "type": "MemberExpression", - "type": "MemberExpression", - "start": 46, + "computed": false, "end": 54, "object": { - "type": "Identifier", - "type": "Identifier", - "start": 46, "end": 49, - "name": "obj" + "name": "obj", + "start": 46, + "type": "Identifier", + "type": "Identifier" }, "property": { - "type": "Literal", - "type": "Literal", - "start": 50, "end": 53, - "value": "a", - "raw": "\"a\"" + "raw": "\"a\"", + "start": 50, + "type": "Literal", + "type": "Literal", + "value": "a" }, - "computed": false - } + "start": 46, + "type": "MemberExpression", + "type": "MemberExpression" + }, + "start": 37, + "type": "VariableDeclarator" } ], - "kind": "const" + "end": 54, + "kind": "const", + "start": 31, + "type": "VariableDeclaration", + "type": "VariableDeclaration" } - ] + ], + "end": 54, + "start": 0 } diff --git a/src/wasm-lib/kcl/src/parser/snapshots/kcl_lib__parser__parser_impl__snapshot_tests__s.snap b/src/wasm-lib/kcl/src/parser/snapshots/kcl_lib__parser__parser_impl__snapshot_tests__s.snap index b1fcf4172..935901238 100644 --- a/src/wasm-lib/kcl/src/parser/snapshots/kcl_lib__parser__parser_impl__snapshot_tests__s.snap +++ b/src/wasm-lib/kcl/src/parser/snapshots/kcl_lib__parser__parser_impl__snapshot_tests__s.snap @@ -3,64 +3,64 @@ source: kcl/src/parser/parser_impl.rs expression: actual --- { - "start": 0, - "end": 27, "body": [ { - "type": "VariableDeclaration", - "type": "VariableDeclaration", - "start": 0, - "end": 27, "declarations": [ { - "type": "VariableDeclarator", - "start": 6, "end": 27, "id": { - "type": "Identifier", - "start": 6, "end": 10, - "name": "prop" + "name": "prop", + "start": 6, + "type": "Identifier" }, "init": { - "type": "MemberExpression", - "type": "MemberExpression", - "start": 13, + "computed": true, "end": 27, "object": { - "type": "MemberExpression", - "type": "MemberExpression", - "start": 13, + "computed": false, "end": 22, "object": { - "type": "Identifier", - "type": "Identifier", - "start": 13, "end": 15, - "name": "yo" + "name": "yo", + "start": 13, + "type": "Identifier", + "type": "Identifier" }, "property": { - "type": "Literal", - "type": "Literal", - "start": 16, "end": 21, - "value": "one", - "raw": "\"one\"" + "raw": "\"one\"", + "start": 16, + "type": "Literal", + "type": "Literal", + "value": "one" }, - "computed": false + "start": 13, + "type": "MemberExpression", + "type": "MemberExpression" }, "property": { - "type": "Identifier", - "type": "Identifier", - "start": 23, "end": 26, - "name": "two" + "name": "two", + "start": 23, + "type": "Identifier", + "type": "Identifier" }, - "computed": true - } + "start": 13, + "type": "MemberExpression", + "type": "MemberExpression" + }, + "start": 6, + "type": "VariableDeclarator" } ], - "kind": "const" + "end": 27, + "kind": "const", + "start": 0, + "type": "VariableDeclaration", + "type": "VariableDeclaration" } - ] + ], + "end": 27, + "start": 0 } diff --git a/src/wasm-lib/kcl/src/parser/snapshots/kcl_lib__parser__parser_impl__snapshot_tests__t.snap b/src/wasm-lib/kcl/src/parser/snapshots/kcl_lib__parser__parser_impl__snapshot_tests__t.snap index 5ca0946c4..a45fae8a8 100644 --- a/src/wasm-lib/kcl/src/parser/snapshots/kcl_lib__parser__parser_impl__snapshot_tests__t.snap +++ b/src/wasm-lib/kcl/src/parser/snapshots/kcl_lib__parser__parser_impl__snapshot_tests__t.snap @@ -3,49 +3,49 @@ source: kcl/src/parser/parser_impl.rs expression: actual --- { - "start": 0, - "end": 17, "body": [ { - "type": "VariableDeclaration", - "type": "VariableDeclaration", - "start": 0, - "end": 17, "declarations": [ { - "type": "VariableDeclarator", - "start": 6, "end": 17, "id": { - "type": "Identifier", - "start": 6, "end": 9, - "name": "pt1" + "name": "pt1", + "start": 6, + "type": "Identifier" }, "init": { - "type": "MemberExpression", - "type": "MemberExpression", - "start": 12, + "computed": true, "end": 17, "object": { - "type": "Identifier", - "type": "Identifier", - "start": 12, "end": 14, - "name": "b1" + "name": "b1", + "start": 12, + "type": "Identifier", + "type": "Identifier" }, "property": { - "type": "Identifier", - "type": "Identifier", - "start": 15, "end": 16, - "name": "x" + "name": "x", + "start": 15, + "type": "Identifier", + "type": "Identifier" }, - "computed": true - } + "start": 12, + "type": "MemberExpression", + "type": "MemberExpression" + }, + "start": 6, + "type": "VariableDeclarator" } ], - "kind": "const" + "end": 17, + "kind": "const", + "start": 0, + "type": "VariableDeclaration", + "type": "VariableDeclaration" } - ] + ], + "end": 17, + "start": 0 } diff --git a/src/wasm-lib/kcl/src/parser/snapshots/kcl_lib__parser__parser_impl__snapshot_tests__u.snap b/src/wasm-lib/kcl/src/parser/snapshots/kcl_lib__parser__parser_impl__snapshot_tests__u.snap index 298647b2c..7ace17471 100644 --- a/src/wasm-lib/kcl/src/parser/snapshots/kcl_lib__parser__parser_impl__snapshot_tests__u.snap +++ b/src/wasm-lib/kcl/src/parser/snapshots/kcl_lib__parser__parser_impl__snapshot_tests__u.snap @@ -3,91 +3,91 @@ source: kcl/src/parser/parser_impl.rs expression: actual --- { - "start": 0, - "end": 34, "body": [ { - "type": "VariableDeclaration", - "type": "VariableDeclaration", - "start": 0, - "end": 34, "declarations": [ { - "type": "VariableDeclarator", - "start": 6, "end": 34, "id": { - "type": "Identifier", - "start": 6, "end": 10, - "name": "prop" + "name": "prop", + "start": 6, + "type": "Identifier" }, "init": { - "type": "MemberExpression", - "type": "MemberExpression", - "start": 13, + "computed": false, "end": 34, "object": { - "type": "MemberExpression", - "type": "MemberExpression", - "start": 13, + "computed": false, "end": 29, "object": { - "type": "MemberExpression", - "type": "MemberExpression", - "start": 13, + "computed": false, "end": 23, "object": { - "type": "MemberExpression", - "type": "MemberExpression", - "start": 13, + "computed": false, "end": 19, "object": { - "type": "Identifier", - "type": "Identifier", - "start": 13, "end": 15, - "name": "yo" + "name": "yo", + "start": 13, + "type": "Identifier", + "type": "Identifier" }, "property": { - "type": "Identifier", - "type": "Identifier", - "start": 16, "end": 19, - "name": "one" + "name": "one", + "start": 16, + "type": "Identifier", + "type": "Identifier" }, - "computed": false + "start": 13, + "type": "MemberExpression", + "type": "MemberExpression" }, "property": { - "type": "Identifier", - "type": "Identifier", - "start": 20, "end": 23, - "name": "two" + "name": "two", + "start": 20, + "type": "Identifier", + "type": "Identifier" }, - "computed": false + "start": 13, + "type": "MemberExpression", + "type": "MemberExpression" }, "property": { - "type": "Identifier", - "type": "Identifier", - "start": 24, "end": 29, - "name": "three" + "name": "three", + "start": 24, + "type": "Identifier", + "type": "Identifier" }, - "computed": false + "start": 13, + "type": "MemberExpression", + "type": "MemberExpression" }, "property": { - "type": "Identifier", - "type": "Identifier", - "start": 30, "end": 34, - "name": "four" + "name": "four", + "start": 30, + "type": "Identifier", + "type": "Identifier" }, - "computed": false - } + "start": 13, + "type": "MemberExpression", + "type": "MemberExpression" + }, + "start": 6, + "type": "VariableDeclarator" } ], - "kind": "const" + "end": 34, + "kind": "const", + "start": 0, + "type": "VariableDeclaration", + "type": "VariableDeclaration" } - ] + ], + "end": 34, + "start": 0 } diff --git a/src/wasm-lib/kcl/src/parser/snapshots/kcl_lib__parser__parser_impl__snapshot_tests__v.snap b/src/wasm-lib/kcl/src/parser/snapshots/kcl_lib__parser__parser_impl__snapshot_tests__v.snap index 8fe980817..d654143f3 100644 --- a/src/wasm-lib/kcl/src/parser/snapshots/kcl_lib__parser__parser_impl__snapshot_tests__v.snap +++ b/src/wasm-lib/kcl/src/parser/snapshots/kcl_lib__parser__parser_impl__snapshot_tests__v.snap @@ -3,50 +3,50 @@ source: kcl/src/parser/parser_impl.rs expression: actual --- { - "start": 0, - "end": 17, "body": [ { - "type": "VariableDeclaration", - "type": "VariableDeclaration", - "start": 0, - "end": 17, "declarations": [ { - "type": "VariableDeclarator", - "start": 6, "end": 17, "id": { - "type": "Identifier", - "start": 6, "end": 9, - "name": "pt1" + "name": "pt1", + "start": 6, + "type": "Identifier" }, "init": { - "type": "MemberExpression", - "type": "MemberExpression", - "start": 12, + "computed": false, "end": 17, "object": { - "type": "Identifier", - "type": "Identifier", - "start": 12, "end": 14, - "name": "b1" + "name": "b1", + "start": 12, + "type": "Identifier", + "type": "Identifier" }, "property": { - "type": "Literal", - "type": "Literal", - "start": 15, "end": 16, - "value": 0, - "raw": "0" + "raw": "0", + "start": 15, + "type": "Literal", + "type": "Literal", + "value": 0 }, - "computed": false - } + "start": 12, + "type": "MemberExpression", + "type": "MemberExpression" + }, + "start": 6, + "type": "VariableDeclarator" } ], - "kind": "const" + "end": 17, + "kind": "const", + "start": 0, + "type": "VariableDeclaration", + "type": "VariableDeclaration" } - ] + ], + "end": 17, + "start": 0 } diff --git a/src/wasm-lib/kcl/src/parser/snapshots/kcl_lib__parser__parser_impl__snapshot_tests__w.snap b/src/wasm-lib/kcl/src/parser/snapshots/kcl_lib__parser__parser_impl__snapshot_tests__w.snap index 4a14cc34a..5e3e22268 100644 --- a/src/wasm-lib/kcl/src/parser/snapshots/kcl_lib__parser__parser_impl__snapshot_tests__w.snap +++ b/src/wasm-lib/kcl/src/parser/snapshots/kcl_lib__parser__parser_impl__snapshot_tests__w.snap @@ -3,50 +3,50 @@ source: kcl/src/parser/parser_impl.rs expression: actual --- { - "start": 0, - "end": 22, "body": [ { - "type": "VariableDeclaration", - "type": "VariableDeclaration", - "start": 0, - "end": 22, "declarations": [ { - "type": "VariableDeclarator", - "start": 6, "end": 22, "id": { - "type": "Identifier", - "start": 6, "end": 9, - "name": "pt1" + "name": "pt1", + "start": 6, + "type": "Identifier" }, "init": { - "type": "MemberExpression", - "type": "MemberExpression", - "start": 12, + "computed": false, "end": 22, "object": { - "type": "Identifier", - "type": "Identifier", - "start": 12, "end": 14, - "name": "b1" + "name": "b1", + "start": 12, + "type": "Identifier", + "type": "Identifier" }, "property": { - "type": "Literal", - "type": "Literal", - "start": 15, "end": 21, - "value": "zero", - "raw": "'zero'" + "raw": "'zero'", + "start": 15, + "type": "Literal", + "type": "Literal", + "value": "zero" }, - "computed": false - } + "start": 12, + "type": "MemberExpression", + "type": "MemberExpression" + }, + "start": 6, + "type": "VariableDeclarator" } ], - "kind": "const" + "end": 22, + "kind": "const", + "start": 0, + "type": "VariableDeclaration", + "type": "VariableDeclaration" } - ] + ], + "end": 22, + "start": 0 } diff --git a/src/wasm-lib/kcl/src/parser/snapshots/kcl_lib__parser__parser_impl__snapshot_tests__x.snap b/src/wasm-lib/kcl/src/parser/snapshots/kcl_lib__parser__parser_impl__snapshot_tests__x.snap index dfa0afcc5..12f97d688 100644 --- a/src/wasm-lib/kcl/src/parser/snapshots/kcl_lib__parser__parser_impl__snapshot_tests__x.snap +++ b/src/wasm-lib/kcl/src/parser/snapshots/kcl_lib__parser__parser_impl__snapshot_tests__x.snap @@ -3,49 +3,49 @@ source: kcl/src/parser/parser_impl.rs expression: actual --- { - "start": 0, - "end": 19, "body": [ { - "type": "VariableDeclaration", - "type": "VariableDeclaration", - "start": 0, - "end": 19, "declarations": [ { - "type": "VariableDeclarator", - "start": 6, "end": 19, "id": { - "type": "Identifier", - "start": 6, "end": 9, - "name": "pt1" + "name": "pt1", + "start": 6, + "type": "Identifier" }, "init": { - "type": "MemberExpression", - "type": "MemberExpression", - "start": 12, + "computed": false, "end": 19, "object": { - "type": "Identifier", - "type": "Identifier", - "start": 12, "end": 14, - "name": "b1" + "name": "b1", + "start": 12, + "type": "Identifier", + "type": "Identifier" }, "property": { - "type": "Identifier", - "type": "Identifier", - "start": 15, "end": 19, - "name": "zero" + "name": "zero", + "start": 15, + "type": "Identifier", + "type": "Identifier" }, - "computed": false - } + "start": 12, + "type": "MemberExpression", + "type": "MemberExpression" + }, + "start": 6, + "type": "VariableDeclarator" } ], - "kind": "const" + "end": 19, + "kind": "const", + "start": 0, + "type": "VariableDeclaration", + "type": "VariableDeclaration" } - ] + ], + "end": 19, + "start": 0 } diff --git a/src/wasm-lib/kcl/src/parser/snapshots/kcl_lib__parser__parser_impl__snapshot_tests__y.snap b/src/wasm-lib/kcl/src/parser/snapshots/kcl_lib__parser__parser_impl__snapshot_tests__y.snap index 8d7b37232..d9e1e0f3a 100644 --- a/src/wasm-lib/kcl/src/parser/snapshots/kcl_lib__parser__parser_impl__snapshot_tests__y.snap +++ b/src/wasm-lib/kcl/src/parser/snapshots/kcl_lib__parser__parser_impl__snapshot_tests__y.snap @@ -3,50 +3,50 @@ source: kcl/src/parser/parser_impl.rs expression: actual --- { - "start": 0, - "end": 29, "body": [ { - "type": "VariableDeclaration", - "type": "VariableDeclaration", - "start": 0, - "end": 29, "declarations": [ { - "type": "VariableDeclarator", - "start": 6, "end": 29, "id": { - "type": "Identifier", - "start": 6, "end": 8, - "name": "sg" + "name": "sg", + "start": 6, + "type": "Identifier" }, "init": { - "type": "CallExpression", - "type": "CallExpression", - "start": 11, - "end": 29, - "callee": { - "type": "Identifier", - "start": 11, - "end": 24, - "name": "startSketchAt" - }, "arguments": [ { - "type": "Identifier", - "type": "Identifier", - "start": 25, "end": 28, - "name": "pos" + "name": "pos", + "start": 25, + "type": "Identifier", + "type": "Identifier" } ], - "optional": false - } + "callee": { + "end": 24, + "name": "startSketchAt", + "start": 11, + "type": "Identifier" + }, + "end": 29, + "optional": false, + "start": 11, + "type": "CallExpression", + "type": "CallExpression" + }, + "start": 6, + "type": "VariableDeclarator" } ], - "kind": "const" + "end": 29, + "kind": "const", + "start": 0, + "type": "VariableDeclaration", + "type": "VariableDeclaration" } - ] + ], + "end": 29, + "start": 0 } diff --git a/src/wasm-lib/kcl/src/parser/snapshots/kcl_lib__parser__parser_impl__snapshot_tests__z.snap b/src/wasm-lib/kcl/src/parser/snapshots/kcl_lib__parser__parser_impl__snapshot_tests__z.snap index 1e0f9e490..f13e29ef2 100644 --- a/src/wasm-lib/kcl/src/parser/snapshots/kcl_lib__parser__parser_impl__snapshot_tests__z.snap +++ b/src/wasm-lib/kcl/src/parser/snapshots/kcl_lib__parser__parser_impl__snapshot_tests__z.snap @@ -3,109 +3,109 @@ source: kcl/src/parser/parser_impl.rs expression: actual --- { - "start": 0, - "end": 53, "body": [ { - "type": "VariableDeclaration", - "type": "VariableDeclaration", - "start": 0, - "end": 53, "declarations": [ { - "type": "VariableDeclarator", - "start": 6, "end": 53, "id": { - "type": "Identifier", - "start": 6, "end": 8, - "name": "sg" + "name": "sg", + "start": 6, + "type": "Identifier" }, "init": { - "type": "PipeExpression", - "type": "PipeExpression", - "start": 11, - "end": 53, "body": [ { - "type": "CallExpression", - "type": "CallExpression", - "start": 11, - "end": 29, - "callee": { - "type": "Identifier", - "start": 11, - "end": 24, - "name": "startSketchAt" - }, "arguments": [ { - "type": "Identifier", - "type": "Identifier", - "start": 25, "end": 28, - "name": "pos" + "name": "pos", + "start": 25, + "type": "Identifier", + "type": "Identifier" } ], - "optional": false + "callee": { + "end": 24, + "name": "startSketchAt", + "start": 11, + "type": "Identifier" + }, + "end": 29, + "optional": false, + "start": 11, + "type": "CallExpression", + "type": "CallExpression" }, { - "type": "CallExpression", - "type": "CallExpression", - "start": 33, - "end": 53, - "callee": { - "type": "Identifier", - "start": 33, - "end": 37, - "name": "line" - }, "arguments": [ { - "type": "ArrayExpression", - "type": "ArrayExpression", - "start": 38, - "end": 49, "elements": [ { - "type": "Literal", - "type": "Literal", - "start": 39, "end": 40, - "value": 0, - "raw": "0" + "raw": "0", + "start": 39, + "type": "Literal", + "type": "Literal", + "value": 0 }, { - "type": "UnaryExpression", - "type": "UnaryExpression", - "start": 42, + "argument": { + "end": 48, + "name": "scale", + "start": 43, + "type": "Identifier", + "type": "Identifier" + }, "end": 48, "operator": "-", - "argument": { - "type": "Identifier", - "type": "Identifier", - "start": 43, - "end": 48, - "name": "scale" - } + "start": 42, + "type": "UnaryExpression", + "type": "UnaryExpression" } - ] + ], + "end": 49, + "start": 38, + "type": "ArrayExpression", + "type": "ArrayExpression" }, { - "type": "PipeSubstitution", - "type": "PipeSubstitution", + "end": 52, "start": 51, - "end": 52 + "type": "PipeSubstitution", + "type": "PipeSubstitution" } ], - "optional": false + "callee": { + "end": 37, + "name": "line", + "start": 33, + "type": "Identifier" + }, + "end": 53, + "optional": false, + "start": 33, + "type": "CallExpression", + "type": "CallExpression" } - ] - } + ], + "end": 53, + "start": 11, + "type": "PipeExpression", + "type": "PipeExpression" + }, + "start": 6, + "type": "VariableDeclarator" } ], - "kind": "const" + "end": 53, + "kind": "const", + "start": 0, + "type": "VariableDeclaration", + "type": "VariableDeclaration" } - ] + ], + "end": 53, + "start": 0 } diff --git a/src/wasm-lib/kcl/src/simulation_tests.rs b/src/wasm-lib/kcl/src/simulation_tests.rs index bcbcdf7cf..9a4116937 100644 --- a/src/wasm-lib/kcl/src/simulation_tests.rs +++ b/src/wasm-lib/kcl/src/simulation_tests.rs @@ -1,4 +1,9 @@ -use crate::{ast::types::Program, errors::KclError, parser::Parser, token::Token}; +use crate::{ + ast::types::{Node, Program}, + errors::KclError, + parser::Parser, + token::Token, +}; /// Deserialize the data from a snapshot. fn get(snapshot: &str) -> T { @@ -79,7 +84,7 @@ fn unparse(test_name: &str) { async fn execute(test_name: &str) { // Read the AST from disk. let input = read("ast.snap", test_name); - let ast_res: Result = get(&input); + let ast_res: Result, KclError> = get(&input); let Ok(ast) = ast_res else { return; }; diff --git a/src/wasm-lib/kcl/src/std/args.rs b/src/wasm-lib/kcl/src/std/args.rs index 95bf3a78a..b3ef1c442 100644 --- a/src/wasm-lib/kcl/src/std/args.rs +++ b/src/wasm-lib/kcl/src/std/args.rs @@ -7,7 +7,7 @@ use serde::de::DeserializeOwned; use serde_json::Value as JValue; use crate::{ - ast::types::{execute::parse_json_number_as_f64, TagDeclarator}, + ast::types::{execute::parse_json_number_as_f64, TagNode}, errors::{KclError, KclErrorDetails}, executor::{ ExecState, ExecutorContext, ExtrudeSurface, KclValue, Metadata, Sketch, SketchSet, SketchSurface, Solid, @@ -260,7 +260,7 @@ impl Args { ( crate::std::shapes::CircleData, crate::std::shapes::SketchOrSurface, - Option, + Option, ), KclError, > { @@ -286,7 +286,7 @@ impl Args { FromArgs::from_args(self, 0) } - pub(crate) fn get_sketch_and_optional_tag(&self) -> Result<(Sketch, Option), KclError> { + pub(crate) fn get_sketch_and_optional_tag(&self) -> Result<(Sketch, Option), KclError> { FromArgs::from_args(self, 0) } @@ -318,16 +318,14 @@ impl Args { FromArgs::from_args(self, 0) } - pub(crate) fn get_data_and_sketch_and_tag<'a, T>(&'a self) -> Result<(T, Sketch, Option), KclError> + pub(crate) fn get_data_and_sketch_and_tag<'a, T>(&'a self) -> Result<(T, Sketch, Option), KclError> where T: serde::de::DeserializeOwned + FromKclValue<'a> + Sized, { FromArgs::from_args(self, 0) } - pub(crate) fn get_data_and_sketch_surface<'a, T>( - &'a self, - ) -> Result<(T, SketchSurface, Option), KclError> + pub(crate) fn get_data_and_sketch_surface<'a, T>(&'a self) -> Result<(T, SketchSurface, Option), KclError> where T: serde::de::DeserializeOwned + FromKclValue<'a> + Sized, { @@ -348,9 +346,7 @@ impl Args { FromArgs::from_args(self, 0) } - pub(crate) fn get_data_and_solid_and_tag<'a, T>( - &'a self, - ) -> Result<(T, Box, Option), KclError> + pub(crate) fn get_data_and_solid_and_tag<'a, T>(&'a self) -> Result<(T, Box, Option), KclError> where T: serde::de::DeserializeOwned + FromKclValue<'a> + Sized, { @@ -466,7 +462,7 @@ impl Args { ( crate::std::shapes::PolygonData, crate::std::shapes::SketchOrSurface, - Option, + Option, ), KclError, > { @@ -603,7 +599,7 @@ impl<'a> FromKclValue<'a> for Vec { } } -impl<'a> FromKclValue<'a> for TagDeclarator { +impl<'a> FromKclValue<'a> for TagNode { fn from_mem_item(arg: &'a KclValue) -> Option { arg.get_tag_declarator().ok() } diff --git a/src/wasm-lib/kcl/src/std/chamfer.rs b/src/wasm-lib/kcl/src/std/chamfer.rs index e3deb4250..e3b9cfcc4 100644 --- a/src/wasm-lib/kcl/src/std/chamfer.rs +++ b/src/wasm-lib/kcl/src/std/chamfer.rs @@ -8,7 +8,7 @@ use schemars::JsonSchema; use serde::{Deserialize, Serialize}; use crate::{ - ast::types::TagDeclarator, + ast::types::TagNode, errors::{KclError, KclErrorDetails}, executor::{ChamferSurface, EdgeCut, ExecState, ExtrudeSurface, GeoMeta, KclValue, Solid}, std::{fillet::EdgeReference, Args}, @@ -29,7 +29,7 @@ pub struct ChamferData { /// Create chamfers on tagged paths. pub async fn chamfer(exec_state: &mut ExecState, args: Args) -> Result { - let (data, solid, tag): (ChamferData, Box, Option) = args.get_data_and_solid_and_tag()?; + let (data, solid, tag): (ChamferData, Box, Option) = args.get_data_and_solid_and_tag()?; let solid = inner_chamfer(data, solid, tag, exec_state, args).await?; Ok(KclValue::Solid(solid)) @@ -102,7 +102,7 @@ pub async fn chamfer(exec_state: &mut ExecState, args: Args) -> Result, - tag: Option, + tag: Option, exec_state: &mut ExecState, args: Args, ) -> Result, KclError> { diff --git a/src/wasm-lib/kcl/src/std/fillet.rs b/src/wasm-lib/kcl/src/std/fillet.rs index 8e0f0fdc9..758bcbad4 100644 --- a/src/wasm-lib/kcl/src/std/fillet.rs +++ b/src/wasm-lib/kcl/src/std/fillet.rs @@ -12,7 +12,7 @@ use serde::{Deserialize, Serialize}; use uuid::Uuid; use crate::{ - ast::types::TagDeclarator, + ast::types::TagNode, errors::{KclError, KclErrorDetails}, executor::{EdgeCut, ExecState, ExtrudeSurface, FilletSurface, GeoMeta, KclValue, Solid, TagIdentifier, UserVal}, settings::types::UnitLength, @@ -55,7 +55,7 @@ impl EdgeReference { /// Create fillets on tagged paths. pub async fn fillet(exec_state: &mut ExecState, args: Args) -> Result { - let (data, solid, tag): (FilletData, Box, Option) = args.get_data_and_solid_and_tag()?; + let (data, solid, tag): (FilletData, Box, Option) = args.get_data_and_solid_and_tag()?; let solid = inner_fillet(data, solid, tag, exec_state, args).await?; Ok(KclValue::Solid(solid)) @@ -123,7 +123,7 @@ pub async fn fillet(exec_state: &mut ExecState, args: Args) -> Result, - tag: Option, + tag: Option, exec_state: &mut ExecState, args: Args, ) -> Result, KclError> { diff --git a/src/wasm-lib/kcl/src/std/kcl_stdlib.rs b/src/wasm-lib/kcl/src/std/kcl_stdlib.rs index 13146bd57..e724a4697 100644 --- a/src/wasm-lib/kcl/src/std/kcl_stdlib.rs +++ b/src/wasm-lib/kcl/src/std/kcl_stdlib.rs @@ -4,7 +4,7 @@ use schemars::JsonSchema; use serde::{Deserialize, Serialize}; use crate::{ - ast::types::{BodyItem, Expr, FunctionExpression, Program}, + ast::types::{BodyItem, Expr, FunctionExpression, Node, Program}, docs::{StdLibFn, StdLibFnData}, token::lexer, }; @@ -82,7 +82,7 @@ impl Serialize for Box { /// Parse a KCL program. Expect it to have a single body item, which is a function. /// Return the program and its single function. /// Return None if those expectations aren't met. -pub fn extract_function(source: &str) -> Option<(Program, Box)> { +pub fn extract_function(source: &str) -> Option<(Node, crate::ast::types::BoxNode)> { let tokens = lexer(source).unwrap(); let src = crate::parser::Parser::new(tokens).ast().ok()?; assert_eq!(src.body.len(), 1); diff --git a/src/wasm-lib/kcl/src/std/mod.rs b/src/wasm-lib/kcl/src/std/mod.rs index d8e52ff68..ba69aef88 100644 --- a/src/wasm-lib/kcl/src/std/mod.rs +++ b/src/wasm-lib/kcl/src/std/mod.rs @@ -314,6 +314,6 @@ pub enum Primitive { /// A closure used as an argument to a stdlib function. pub struct FnAsArg<'a> { pub func: Option<&'a crate::executor::MemoryFunction>, - pub expr: Box, + pub expr: crate::ast::types::BoxNode, pub memory: Box, } diff --git a/src/wasm-lib/kcl/src/std/shapes.rs b/src/wasm-lib/kcl/src/std/shapes.rs index 4a1d11822..43a28df69 100644 --- a/src/wasm-lib/kcl/src/std/shapes.rs +++ b/src/wasm-lib/kcl/src/std/shapes.rs @@ -14,7 +14,7 @@ use schemars::JsonSchema; use serde::{Deserialize, Serialize}; use crate::{ - ast::types::TagDeclarator, + ast::types::TagNode, errors::{KclError, KclErrorDetails}, executor::{BasePath, ExecState, GeoMeta, KclValue, Path, Sketch, SketchSurface}, std::Args, @@ -44,7 +44,7 @@ pub struct CircleData { /// Sketch a circle. pub async fn circle(exec_state: &mut ExecState, args: Args) -> Result { - let (data, sketch_surface_or_group, tag): (CircleData, SketchOrSurface, Option) = + let (data, sketch_surface_or_group, tag): (CircleData, SketchOrSurface, Option) = args.get_circle_args()?; let sketch = inner_circle(data, sketch_surface_or_group, tag, exec_state, args).await?; @@ -78,7 +78,7 @@ pub async fn circle(exec_state: &mut ExecState, args: Args) -> Result, + tag: Option, exec_state: &mut ExecState, args: Args, ) -> Result { @@ -178,7 +178,7 @@ fn default_inscribed() -> bool { /// Create a regular polygon with the specified number of sides and radius. pub async fn polygon(exec_state: &mut ExecState, args: Args) -> Result { - let (data, sketch_surface_or_group, tag): (PolygonData, SketchOrSurface, Option) = + let (data, sketch_surface_or_group, tag): (PolygonData, SketchOrSurface, Option) = args.get_polygon_args()?; let sketch = inner_polygon(data, sketch_surface_or_group, tag, exec_state, args).await?; @@ -217,7 +217,7 @@ pub async fn polygon(exec_state: &mut ExecState, args: Args) -> Result, + tag: Option, exec_state: &mut ExecState, args: Args, ) -> Result { diff --git a/src/wasm-lib/kcl/src/std/sketch.rs b/src/wasm-lib/kcl/src/std/sketch.rs index 8deb9cb2d..cd30f09da 100644 --- a/src/wasm-lib/kcl/src/std/sketch.rs +++ b/src/wasm-lib/kcl/src/std/sketch.rs @@ -12,8 +12,8 @@ use parse_display::{Display, FromStr}; use schemars::JsonSchema; use serde::{Deserialize, Serialize}; +use crate::ast::types::TagNode; use crate::{ - ast::types::TagDeclarator, errors::{KclError, KclErrorDetails}, executor::{ BasePath, ExecState, Face, GeoMeta, KclValue, Path, Plane, Point2d, Point3d, Sketch, SketchSet, SketchSurface, @@ -94,7 +94,7 @@ pub enum StartOrEnd { /// Draw a line to a point. pub async fn line_to(exec_state: &mut ExecState, args: Args) -> Result { - let (to, sketch, tag): ([f64; 2], Sketch, Option) = args.get_data_and_sketch_and_tag()?; + let (to, sketch, tag): ([f64; 2], Sketch, Option) = args.get_data_and_sketch_and_tag()?; let new_sketch = inner_line_to(to, sketch, tag, exec_state, args).await?; Ok(KclValue::new_user_val(new_sketch.meta.clone(), new_sketch)) @@ -118,7 +118,7 @@ pub async fn line_to(exec_state: &mut ExecState, args: Args) -> Result, + tag: Option, exec_state: &mut ExecState, args: Args, ) -> Result { @@ -161,7 +161,7 @@ async fn inner_line_to( /// Draw a line to a point on the x-axis. pub async fn x_line_to(exec_state: &mut ExecState, args: Args) -> Result { - let (to, sketch, tag): (f64, Sketch, Option) = args.get_data_and_sketch_and_tag()?; + let (to, sketch, tag): (f64, Sketch, Option) = args.get_data_and_sketch_and_tag()?; let new_sketch = inner_x_line_to(to, sketch, tag, exec_state, args).await?; Ok(KclValue::new_user_val(new_sketch.meta.clone(), new_sketch)) @@ -196,7 +196,7 @@ pub async fn x_line_to(exec_state: &mut ExecState, args: Args) -> Result, + tag: Option, exec_state: &mut ExecState, args: Args, ) -> Result { @@ -209,7 +209,7 @@ async fn inner_x_line_to( /// Draw a line to a point on the y-axis. pub async fn y_line_to(exec_state: &mut ExecState, args: Args) -> Result { - let (to, sketch, tag): (f64, Sketch, Option) = args.get_data_and_sketch_and_tag()?; + let (to, sketch, tag): (f64, Sketch, Option) = args.get_data_and_sketch_and_tag()?; let new_sketch = inner_y_line_to(to, sketch, tag, exec_state, args).await?; Ok(KclValue::new_user_val(new_sketch.meta.clone(), new_sketch)) @@ -237,7 +237,7 @@ pub async fn y_line_to(exec_state: &mut ExecState, args: Args) -> Result, + tag: Option, exec_state: &mut ExecState, args: Args, ) -> Result { @@ -249,7 +249,7 @@ async fn inner_y_line_to( /// Draw a line. pub async fn line(exec_state: &mut ExecState, args: Args) -> Result { - let (delta, sketch, tag): ([f64; 2], Sketch, Option) = args.get_data_and_sketch_and_tag()?; + let (delta, sketch, tag): ([f64; 2], Sketch, Option) = args.get_data_and_sketch_and_tag()?; let new_sketch = inner_line(delta, sketch, tag, exec_state, args).await?; Ok(KclValue::new_user_val(new_sketch.meta.clone(), new_sketch)) @@ -285,7 +285,7 @@ pub async fn line(exec_state: &mut ExecState, args: Args) -> Result, + tag: Option, exec_state: &mut ExecState, args: Args, ) -> Result { @@ -330,7 +330,7 @@ async fn inner_line( /// Draw a line on the x-axis. pub async fn x_line(exec_state: &mut ExecState, args: Args) -> Result { - let (length, sketch, tag): (f64, Sketch, Option) = args.get_data_and_sketch_and_tag()?; + let (length, sketch, tag): (f64, Sketch, Option) = args.get_data_and_sketch_and_tag()?; let new_sketch = inner_x_line(length, sketch, tag, exec_state, args).await?; Ok(KclValue::new_user_val(new_sketch.meta.clone(), new_sketch)) @@ -364,7 +364,7 @@ pub async fn x_line(exec_state: &mut ExecState, args: Args) -> Result, + tag: Option, exec_state: &mut ExecState, args: Args, ) -> Result { @@ -373,7 +373,7 @@ async fn inner_x_line( /// Draw a line on the y-axis. pub async fn y_line(exec_state: &mut ExecState, args: Args) -> Result { - let (length, sketch, tag): (f64, Sketch, Option) = args.get_data_and_sketch_and_tag()?; + let (length, sketch, tag): (f64, Sketch, Option) = args.get_data_and_sketch_and_tag()?; let new_sketch = inner_y_line(length, sketch, tag, exec_state, args).await?; Ok(KclValue::new_user_val(new_sketch.meta.clone(), new_sketch)) @@ -402,7 +402,7 @@ pub async fn y_line(exec_state: &mut ExecState, args: Args) -> Result, + tag: Option, exec_state: &mut ExecState, args: Args, ) -> Result { @@ -427,7 +427,7 @@ pub enum AngledLineData { /// Draw an angled line. pub async fn angled_line(exec_state: &mut ExecState, args: Args) -> Result { - let (data, sketch, tag): (AngledLineData, Sketch, Option) = args.get_data_and_sketch_and_tag()?; + let (data, sketch, tag): (AngledLineData, Sketch, Option) = args.get_data_and_sketch_and_tag()?; let new_sketch = inner_angled_line(data, sketch, tag, exec_state, args).await?; Ok(KclValue::new_user_val(new_sketch.meta.clone(), new_sketch)) @@ -456,7 +456,7 @@ pub async fn angled_line(exec_state: &mut ExecState, args: Args) -> Result, + tag: Option, exec_state: &mut ExecState, args: Args, ) -> Result { @@ -512,7 +512,7 @@ async fn inner_angled_line( /// Draw an angled line of a given x length. pub async fn angled_line_of_x_length(exec_state: &mut ExecState, args: Args) -> Result { - let (data, sketch, tag): (AngledLineData, Sketch, Option) = args.get_data_and_sketch_and_tag()?; + let (data, sketch, tag): (AngledLineData, Sketch, Option) = args.get_data_and_sketch_and_tag()?; let new_sketch = inner_angled_line_of_x_length(data, sketch, tag, exec_state, args).await?; Ok(KclValue::new_user_val(new_sketch.meta.clone(), new_sketch)) @@ -537,7 +537,7 @@ pub async fn angled_line_of_x_length(exec_state: &mut ExecState, args: Args) -> async fn inner_angled_line_of_x_length( data: AngledLineData, sketch: Sketch, - tag: Option, + tag: Option, exec_state: &mut ExecState, args: Args, ) -> Result { @@ -580,7 +580,7 @@ pub struct AngledLineToData { /// Draw an angled line to a given x coordinate. pub async fn angled_line_to_x(exec_state: &mut ExecState, args: Args) -> Result { - let (data, sketch, tag): (AngledLineToData, Sketch, Option) = args.get_data_and_sketch_and_tag()?; + let (data, sketch, tag): (AngledLineToData, Sketch, Option) = args.get_data_and_sketch_and_tag()?; let new_sketch = inner_angled_line_to_x(data, sketch, tag, exec_state, args).await?; Ok(KclValue::new_user_val(new_sketch.meta.clone(), new_sketch)) @@ -606,7 +606,7 @@ pub async fn angled_line_to_x(exec_state: &mut ExecState, args: Args) -> Result< async fn inner_angled_line_to_x( data: AngledLineToData, sketch: Sketch, - tag: Option, + tag: Option, exec_state: &mut ExecState, args: Args, ) -> Result { @@ -637,7 +637,7 @@ async fn inner_angled_line_to_x( /// Draw an angled line of a given y length. pub async fn angled_line_of_y_length(exec_state: &mut ExecState, args: Args) -> Result { - let (data, sketch, tag): (AngledLineData, Sketch, Option) = args.get_data_and_sketch_and_tag()?; + let (data, sketch, tag): (AngledLineData, Sketch, Option) = args.get_data_and_sketch_and_tag()?; let new_sketch = inner_angled_line_of_y_length(data, sketch, tag, exec_state, args).await?; @@ -665,7 +665,7 @@ pub async fn angled_line_of_y_length(exec_state: &mut ExecState, args: Args) -> async fn inner_angled_line_of_y_length( data: AngledLineData, sketch: Sketch, - tag: Option, + tag: Option, exec_state: &mut ExecState, args: Args, ) -> Result { @@ -697,7 +697,7 @@ async fn inner_angled_line_of_y_length( /// Draw an angled line to a given y coordinate. pub async fn angled_line_to_y(exec_state: &mut ExecState, args: Args) -> Result { - let (data, sketch, tag): (AngledLineToData, Sketch, Option) = args.get_data_and_sketch_and_tag()?; + let (data, sketch, tag): (AngledLineToData, Sketch, Option) = args.get_data_and_sketch_and_tag()?; let new_sketch = inner_angled_line_to_y(data, sketch, tag, exec_state, args).await?; Ok(KclValue::new_user_val(new_sketch.meta.clone(), new_sketch)) @@ -723,7 +723,7 @@ pub async fn angled_line_to_y(exec_state: &mut ExecState, args: Args) -> Result< async fn inner_angled_line_to_y( data: AngledLineToData, sketch: Sketch, - tag: Option, + tag: Option, exec_state: &mut ExecState, args: Args, ) -> Result { @@ -768,7 +768,7 @@ pub struct AngledLineThatIntersectsData { /// Draw an angled line that intersects with a given line. pub async fn angled_line_that_intersects(exec_state: &mut ExecState, args: Args) -> Result { - let (data, sketch, tag): (AngledLineThatIntersectsData, Sketch, Option) = + let (data, sketch, tag): (AngledLineThatIntersectsData, Sketch, Option) = args.get_data_and_sketch_and_tag()?; let new_sketch = inner_angled_line_that_intersects(data, sketch, tag, exec_state, args).await?; Ok(KclValue::new_user_val(new_sketch.meta.clone(), new_sketch)) @@ -799,7 +799,7 @@ pub async fn angled_line_that_intersects(exec_state: &mut ExecState, args: Args) async fn inner_angled_line_that_intersects( data: AngledLineThatIntersectsData, sketch: Sketch, - tag: Option, + tag: Option, exec_state: &mut ExecState, args: Args, ) -> Result { @@ -1131,7 +1131,7 @@ async fn start_sketch_on_plane( /// Start a new profile at a given point. pub async fn start_profile_at(exec_state: &mut ExecState, args: Args) -> Result { - let (start, sketch_surface, tag): ([f64; 2], SketchSurface, Option) = + let (start, sketch_surface, tag): ([f64; 2], SketchSurface, Option) = args.get_data_and_sketch_surface()?; let sketch = inner_start_profile_at(start, sketch_surface, tag, exec_state, args).await?; @@ -1178,7 +1178,7 @@ pub async fn start_profile_at(exec_state: &mut ExecState, args: Args) -> Result< pub(crate) async fn inner_start_profile_at( to: [f64; 2], sketch_surface: SketchSurface, - tag: Option, + tag: Option, exec_state: &mut ExecState, args: Args, ) -> Result { @@ -1341,7 +1341,7 @@ pub(crate) fn inner_profile_start(sketch: Sketch) -> Result<[f64; 2], KclError> /// Close the current sketch. pub async fn close(exec_state: &mut ExecState, args: Args) -> Result { - let (sketch, tag): (Sketch, Option) = args.get_sketch_and_optional_tag()?; + let (sketch, tag): (Sketch, Option) = args.get_sketch_and_optional_tag()?; let new_sketch = inner_close(sketch, tag, exec_state, args).await?; @@ -1374,7 +1374,7 @@ pub async fn close(exec_state: &mut ExecState, args: Args) -> Result, + tag: Option, exec_state: &mut ExecState, args: Args, ) -> Result { @@ -1449,7 +1449,7 @@ pub enum ArcData { /// Draw an arc. pub async fn arc(exec_state: &mut ExecState, args: Args) -> Result { - let (data, sketch, tag): (ArcData, Sketch, Option) = args.get_data_and_sketch_and_tag()?; + let (data, sketch, tag): (ArcData, Sketch, Option) = args.get_data_and_sketch_and_tag()?; let new_sketch = inner_arc(data, sketch, tag, exec_state, args).await?; Ok(KclValue::new_user_val(new_sketch.meta.clone(), new_sketch)) @@ -1483,7 +1483,7 @@ pub async fn arc(exec_state: &mut ExecState, args: Args) -> Result, + tag: Option, exec_state: &mut ExecState, args: Args, ) -> Result { @@ -1570,7 +1570,7 @@ pub enum TangentialArcData { /// Draw a tangential arc. pub async fn tangential_arc(exec_state: &mut ExecState, args: Args) -> Result { - let (data, sketch, tag): (TangentialArcData, Sketch, Option) = args.get_data_and_sketch_and_tag()?; + let (data, sketch, tag): (TangentialArcData, Sketch, Option) = args.get_data_and_sketch_and_tag()?; let new_sketch = inner_tangential_arc(data, sketch, tag, exec_state, args).await?; Ok(KclValue::new_user_val(new_sketch.meta.clone(), new_sketch)) @@ -1605,7 +1605,7 @@ pub async fn tangential_arc(exec_state: &mut ExecState, args: Args) -> Result, + tag: Option, exec_state: &mut ExecState, args: Args, ) -> Result { @@ -1698,7 +1698,7 @@ fn tan_arc_to(sketch: &Sketch, to: &[f64; 2]) -> ModelingCmd { /// Draw a tangential arc to a specific point. pub async fn tangential_arc_to(exec_state: &mut ExecState, args: Args) -> Result { - let (to, sketch, tag): ([f64; 2], Sketch, Option) = super::args::FromArgs::from_args(&args, 0)?; + let (to, sketch, tag): ([f64; 2], Sketch, Option) = super::args::FromArgs::from_args(&args, 0)?; let new_sketch = inner_tangential_arc_to(to, sketch, tag, exec_state, args).await?; Ok(KclValue::new_user_val(new_sketch.meta.clone(), new_sketch)) @@ -1706,7 +1706,7 @@ pub async fn tangential_arc_to(exec_state: &mut ExecState, args: Args) -> Result /// Draw a tangential arc to point some distance away.. pub async fn tangential_arc_to_relative(exec_state: &mut ExecState, args: Args) -> Result { - let (delta, sketch, tag): ([f64; 2], Sketch, Option) = super::args::FromArgs::from_args(&args, 0)?; + let (delta, sketch, tag): ([f64; 2], Sketch, Option) = super::args::FromArgs::from_args(&args, 0)?; let new_sketch = inner_tangential_arc_to_relative(delta, sketch, tag, exec_state, args).await?; Ok(KclValue::new_user_val(new_sketch.meta.clone(), new_sketch)) @@ -1735,7 +1735,7 @@ pub async fn tangential_arc_to_relative(exec_state: &mut ExecState, args: Args) async fn inner_tangential_arc_to( to: [f64; 2], sketch: Sketch, - tag: Option, + tag: Option, exec_state: &mut ExecState, args: Args, ) -> Result { @@ -1805,7 +1805,7 @@ async fn inner_tangential_arc_to( async fn inner_tangential_arc_to_relative( delta: [f64; 2], sketch: Sketch, - tag: Option, + tag: Option, exec_state: &mut ExecState, args: Args, ) -> Result { @@ -1882,7 +1882,7 @@ pub struct BezierData { /// Draw a bezier curve. pub async fn bezier_curve(exec_state: &mut ExecState, args: Args) -> Result { - let (data, sketch, tag): (BezierData, Sketch, Option) = args.get_data_and_sketch_and_tag()?; + let (data, sketch, tag): (BezierData, Sketch, Option) = args.get_data_and_sketch_and_tag()?; let new_sketch = inner_bezier_curve(data, sketch, tag, exec_state, args).await?; Ok(KclValue::new_user_val(new_sketch.meta.clone(), new_sketch)) @@ -1912,7 +1912,7 @@ pub async fn bezier_curve(exec_state: &mut ExecState, args: Args) -> Result, + tag: Option, exec_state: &mut ExecState, args: Args, ) -> Result { diff --git a/src/wasm-lib/kcl/src/test_server.rs b/src/wasm-lib/kcl/src/test_server.rs index 42415d42c..d54bc511e 100644 --- a/src/wasm-lib/kcl/src/test_server.rs +++ b/src/wasm-lib/kcl/src/test_server.rs @@ -1,7 +1,7 @@ //! Types used to send data to the test server. use crate::{ - ast::types::Program, + ast::types::{Node, Program}, executor::{new_zoo_client, ExecutorContext, ExecutorSettings, IdGenerator, ProgramMemory}, settings::types::UnitLength, }; @@ -26,7 +26,7 @@ pub async fn execute_and_snapshot(code: &str, units: UnitLength) -> anyhow::Resu /// Executes a kcl program and takes a snapshot of the result. /// This returns the bytes of the snapshot. pub async fn execute_and_snapshot_ast( - ast: Program, + ast: Node, units: UnitLength, ) -> anyhow::Result<(ProgramMemory, image::DynamicImage)> { let ctx = new_context(units, true).await?; @@ -45,7 +45,7 @@ pub async fn execute_and_snapshot_no_auth(code: &str, units: UnitLength) -> anyh async fn do_execute_and_snapshot( ctx: &ExecutorContext, - program: Program, + program: Node, ) -> anyhow::Result<(crate::executor::ExecState, image::DynamicImage)> { let (exec_state, snapshot) = ctx.execute_and_prepare(&program, IdGenerator::default(), None).await?; diff --git a/src/wasm-lib/kcl/src/unparser.rs b/src/wasm-lib/kcl/src/unparser.rs index 5bc1e7d48..4ada1b8c3 100644 --- a/src/wasm-lib/kcl/src/unparser.rs +++ b/src/wasm-lib/kcl/src/unparser.rs @@ -4,7 +4,7 @@ use crate::{ ast::types::{ ArrayExpression, ArrayRangeExpression, BinaryExpression, BinaryOperator, BinaryPart, BodyItem, CallExpression, Expr, FormatOptions, FunctionExpression, IfExpression, ImportStatement, ItemVisibility, Literal, - LiteralIdentifier, LiteralValue, MemberExpression, MemberObject, NonCodeValue, ObjectExpression, + LiteralIdentifier, LiteralValue, MemberExpression, MemberObject, Node, NonCodeValue, ObjectExpression, PipeExpression, Program, TagDeclarator, UnaryExpression, VariableDeclaration, VariableKind, }, parser::PIPE_OPERATOR, @@ -38,11 +38,11 @@ impl Program { .fold(String::new(), |mut output, (index, recast_str)| { let start_string = if index == 0 { // We need to indent. - if self.non_code_meta.start.is_empty() { + if self.non_code_meta.start_nodes.is_empty() { indentation.to_string() } else { self.non_code_meta - .start + .start_nodes .iter() .map(|start| start.format(&indentation)) .collect() @@ -511,7 +511,7 @@ impl IfExpression { } } -impl PipeExpression { +impl Node { fn recast(&self, options: &FormatOptions, indentation_level: usize) -> String { let pipe = self .body diff --git a/src/wasm-lib/kcl/src/walk/ast_node.rs b/src/wasm-lib/kcl/src/walk/ast_node.rs index 337ebf49c..4b76f2686 100644 --- a/src/wasm-lib/kcl/src/walk/ast_node.rs +++ b/src/wasm-lib/kcl/src/walk/ast_node.rs @@ -1,5 +1,5 @@ use crate::{ - ast::{types, types::ValueMeta}, + ast::types::{self, NodeRef}, executor::SourceRange, }; @@ -7,33 +7,33 @@ use crate::{ /// file. Tokens we walk through will be one of these. #[derive(Clone, Debug)] pub enum Node<'a> { - Program(&'a types::Program), + Program(NodeRef<'a, types::Program>), - ImportStatement(&'a types::ImportStatement), - ExpressionStatement(&'a types::ExpressionStatement), - VariableDeclaration(&'a types::VariableDeclaration), - ReturnStatement(&'a types::ReturnStatement), + ImportStatement(NodeRef<'a, types::ImportStatement>), + ExpressionStatement(NodeRef<'a, types::ExpressionStatement>), + VariableDeclaration(NodeRef<'a, types::VariableDeclaration>), + ReturnStatement(NodeRef<'a, types::ReturnStatement>), - VariableDeclarator(&'a types::VariableDeclarator), + VariableDeclarator(NodeRef<'a, types::VariableDeclarator>), - Literal(&'a types::Literal), - TagDeclarator(&'a types::TagDeclarator), - Identifier(&'a types::Identifier), - BinaryExpression(&'a types::BinaryExpression), - FunctionExpression(&'a types::FunctionExpression), - CallExpression(&'a types::CallExpression), - PipeExpression(&'a types::PipeExpression), - PipeSubstitution(&'a types::PipeSubstitution), - ArrayExpression(&'a types::ArrayExpression), - ArrayRangeExpression(&'a types::ArrayRangeExpression), - ObjectExpression(&'a types::ObjectExpression), - MemberExpression(&'a types::MemberExpression), - UnaryExpression(&'a types::UnaryExpression), - IfExpression(&'a types::IfExpression), + Literal(NodeRef<'a, types::Literal>), + TagDeclarator(NodeRef<'a, types::TagDeclarator>), + Identifier(NodeRef<'a, types::Identifier>), + BinaryExpression(NodeRef<'a, types::BinaryExpression>), + FunctionExpression(NodeRef<'a, types::FunctionExpression>), + CallExpression(NodeRef<'a, types::CallExpression>), + PipeExpression(NodeRef<'a, types::PipeExpression>), + PipeSubstitution(NodeRef<'a, types::PipeSubstitution>), + ArrayExpression(NodeRef<'a, types::ArrayExpression>), + ArrayRangeExpression(NodeRef<'a, types::ArrayRangeExpression>), + ObjectExpression(NodeRef<'a, types::ObjectExpression>), + MemberExpression(NodeRef<'a, types::MemberExpression>), + UnaryExpression(NodeRef<'a, types::UnaryExpression>), + IfExpression(NodeRef<'a, types::IfExpression>), Parameter(&'a types::Parameter), - ObjectProperty(&'a types::ObjectProperty), + ObjectProperty(NodeRef<'a, types::ObjectProperty>), MemberObject(&'a types::MemberObject), LiteralIdentifier(&'a types::LiteralIdentifier), @@ -43,34 +43,44 @@ impl From<&Node<'_>> for SourceRange { fn from(node: &Node) -> Self { match node { Node::Program(p) => SourceRange([p.start, p.end]), - Node::ImportStatement(e) => SourceRange([e.start(), e.end()]), - Node::ExpressionStatement(e) => SourceRange([e.start(), e.end()]), - Node::VariableDeclaration(v) => SourceRange([v.start(), v.end()]), - Node::ReturnStatement(r) => SourceRange([r.start(), r.end()]), - Node::VariableDeclarator(v) => SourceRange([v.start(), v.end()]), - Node::Literal(l) => SourceRange([l.start(), l.end()]), - Node::TagDeclarator(t) => SourceRange([t.start(), t.end()]), - Node::Identifier(i) => SourceRange([i.start(), i.end()]), - Node::BinaryExpression(b) => SourceRange([b.start(), b.end()]), - Node::FunctionExpression(f) => SourceRange([f.start(), f.end()]), - Node::CallExpression(c) => SourceRange([c.start(), c.end()]), - Node::PipeExpression(p) => SourceRange([p.start(), p.end()]), - Node::PipeSubstitution(p) => SourceRange([p.start(), p.end()]), - Node::ArrayExpression(a) => SourceRange([a.start(), a.end()]), - Node::ArrayRangeExpression(a) => SourceRange([a.start(), a.end()]), - Node::ObjectExpression(o) => SourceRange([o.start(), o.end()]), - Node::MemberExpression(m) => SourceRange([m.start(), m.end()]), - Node::UnaryExpression(u) => SourceRange([u.start(), u.end()]), - Node::Parameter(p) => SourceRange([p.identifier.start(), p.identifier.end()]), - Node::ObjectProperty(o) => SourceRange([o.start(), o.end()]), + Node::ImportStatement(e) => SourceRange([e.start, e.end]), + Node::ExpressionStatement(e) => SourceRange([e.start, e.end]), + Node::VariableDeclaration(v) => SourceRange([v.start, v.end]), + Node::ReturnStatement(r) => SourceRange([r.start, r.end]), + Node::VariableDeclarator(v) => SourceRange([v.start, v.end]), + Node::Literal(l) => SourceRange([l.start, l.end]), + Node::TagDeclarator(t) => SourceRange([t.start, t.end]), + Node::Identifier(i) => SourceRange([i.start, i.end]), + Node::BinaryExpression(b) => SourceRange([b.start, b.end]), + Node::FunctionExpression(f) => SourceRange([f.start, f.end]), + Node::CallExpression(c) => SourceRange([c.start, c.end]), + Node::PipeExpression(p) => SourceRange([p.start, p.end]), + Node::PipeSubstitution(p) => SourceRange([p.start, p.end]), + Node::ArrayExpression(a) => SourceRange([a.start, a.end]), + Node::ArrayRangeExpression(a) => SourceRange([a.start, a.end]), + Node::ObjectExpression(o) => SourceRange([o.start, o.end]), + Node::MemberExpression(m) => SourceRange([m.start, m.end]), + Node::UnaryExpression(u) => SourceRange([u.start, u.end]), + Node::Parameter(p) => SourceRange([p.identifier.start, p.identifier.end]), + Node::ObjectProperty(o) => SourceRange([o.start, o.end]), Node::MemberObject(m) => SourceRange([m.start(), m.end()]), - Node::IfExpression(m) => SourceRange([m.start(), m.end()]), + Node::IfExpression(m) => SourceRange([m.start, m.end]), Node::LiteralIdentifier(l) => SourceRange([l.start(), l.end()]), } } } macro_rules! impl_from { + ($node:ident, $t: ident) => { + impl<'a> From> for Node<'a> { + fn from(v: NodeRef<'a, types::$t>) -> Self { + Node::$t(v) + } + } + }; +} + +macro_rules! impl_from_ref { ($node:ident, $t: ident) => { impl<'a> From<&'a types::$t> for Node<'a> { fn from(v: &'a types::$t) -> Self { @@ -99,8 +109,8 @@ impl_from!(Node, ArrayRangeExpression); impl_from!(Node, ObjectExpression); impl_from!(Node, MemberExpression); impl_from!(Node, UnaryExpression); -impl_from!(Node, Parameter); impl_from!(Node, ObjectProperty); -impl_from!(Node, MemberObject); +impl_from_ref!(Node, Parameter); +impl_from_ref!(Node, MemberObject); impl_from!(Node, IfExpression); -impl_from!(Node, LiteralIdentifier); +impl_from_ref!(Node, LiteralIdentifier); diff --git a/src/wasm-lib/kcl/src/walk/ast_walk.rs b/src/wasm-lib/kcl/src/walk/ast_walk.rs index 03d872446..f5836b94e 100644 --- a/src/wasm-lib/kcl/src/walk/ast_walk.rs +++ b/src/wasm-lib/kcl/src/walk/ast_walk.rs @@ -2,8 +2,8 @@ use anyhow::Result; use crate::{ ast::types::{ - BinaryPart, BodyItem, Expr, IfExpression, LiteralIdentifier, MemberExpression, MemberObject, ObjectExpression, - ObjectProperty, Parameter, Program, UnaryExpression, VariableDeclarator, + BinaryPart, BodyItem, Expr, IfExpression, LiteralIdentifier, MemberExpression, MemberObject, NodeRef, + ObjectExpression, ObjectProperty, Parameter, Program, UnaryExpression, VariableDeclarator, }, walk::Node, }; @@ -26,7 +26,7 @@ where } /// Run the Walker against all [Node]s in a [Program]. -pub fn walk<'a, WalkT>(prog: &'a Program, f: &WalkT) -> Result +pub fn walk<'a, WalkT>(prog: NodeRef<'a, Program>, f: &WalkT) -> Result where WalkT: Walker<'a>, { @@ -42,7 +42,7 @@ where Ok(true) } -fn walk_variable_declarator<'a, WalkT>(node: &'a VariableDeclarator, f: &WalkT) -> Result +fn walk_variable_declarator<'a, WalkT>(node: NodeRef<'a, VariableDeclarator>, f: &WalkT) -> Result where WalkT: Walker<'a>, { @@ -79,7 +79,7 @@ where f.walk(node.into()) } -fn walk_member_expression<'a, WalkT>(node: &'a MemberExpression, f: &WalkT) -> Result +fn walk_member_expression<'a, WalkT>(node: NodeRef<'a, MemberExpression>, f: &WalkT) -> Result where WalkT: Walker<'a>, { @@ -204,7 +204,7 @@ where } /// Walk through an [ObjectProperty]. -fn walk_object_property<'a, WalkT>(node: &'a ObjectProperty, f: &WalkT) -> Result +fn walk_object_property<'a, WalkT>(node: NodeRef<'a, ObjectProperty>, f: &WalkT) -> Result where WalkT: Walker<'a>, { @@ -215,7 +215,7 @@ where } /// Walk through an [ObjectExpression]. -fn walk_object_expression<'a, WalkT>(node: &'a ObjectExpression, f: &WalkT) -> Result +fn walk_object_expression<'a, WalkT>(node: NodeRef<'a, ObjectExpression>, f: &WalkT) -> Result where WalkT: Walker<'a>, { @@ -232,7 +232,7 @@ where } /// Walk through an [IfExpression]. -fn walk_if_expression<'a, WalkT>(node: &'a IfExpression, f: &WalkT) -> Result +fn walk_if_expression<'a, WalkT>(node: NodeRef<'a, IfExpression>, f: &WalkT) -> Result where WalkT: Walker<'a>, { @@ -259,7 +259,7 @@ where } /// walk through an [UnaryExpression]. -fn walk_unary_expression<'a, WalkT>(node: &'a UnaryExpression, f: &WalkT) -> Result +fn walk_unary_expression<'a, WalkT>(node: NodeRef<'a, UnaryExpression>, f: &WalkT) -> Result where WalkT: Walker<'a>, { diff --git a/src/wasm-lib/kcl/tests/cube/ast.snap b/src/wasm-lib/kcl/tests/cube/ast.snap index e07632995..88234fe25 100644 --- a/src/wasm-lib/kcl/tests/cube/ast.snap +++ b/src/wasm-lib/kcl/tests/cube/ast.snap @@ -1,795 +1,795 @@ --- -source: kcl/src/tests.rs +source: kcl/src/simulation_tests.rs description: Result of parsing cube.kcl snapshot_kind: text --- { "Ok": { - "start": 0, - "end": 344, "body": [ { - "type": "VariableDeclaration", - "type": "VariableDeclaration", - "start": 0, - "end": 316, "declarations": [ { - "type": "VariableDeclarator", - "start": 3, "end": 316, "id": { - "type": "Identifier", - "start": 3, "end": 7, - "name": "cube" + "name": "cube", + "start": 3, + "type": "Identifier" }, "init": { - "type": "FunctionExpression", - "type": "FunctionExpression", - "start": 10, - "end": 316, - "params": [ - { - "type": "Parameter", - "identifier": { - "type": "Identifier", - "start": 11, - "end": 17, - "name": "length" - }, - "optional": false - }, - { - "type": "Parameter", - "identifier": { - "type": "Identifier", - "start": 19, - "end": 25, - "name": "center" - }, - "optional": false - } - ], "body": { - "start": 30, - "end": 316, "body": [ { - "type": "VariableDeclaration", - "type": "VariableDeclaration", - "start": 34, - "end": 48, "declarations": [ { - "type": "VariableDeclarator", - "start": 34, "end": 48, "id": { - "type": "Identifier", - "start": 34, "end": 35, - "name": "l" + "name": "l", + "start": 34, + "type": "Identifier" }, "init": { - "type": "BinaryExpression", - "type": "BinaryExpression", - "start": 38, "end": 48, - "operator": "/", "left": { - "type": "Identifier", - "type": "Identifier", - "start": 38, "end": 44, - "name": "length" + "name": "length", + "start": 38, + "type": "Identifier", + "type": "Identifier" }, + "operator": "/", "right": { - "type": "Literal", - "type": "Literal", - "start": 47, "end": 48, - "value": 2, - "raw": "2" - } - } + "raw": "2", + "start": 47, + "type": "Literal", + "type": "Literal", + "value": 2 + }, + "start": 38, + "type": "BinaryExpression", + "type": "BinaryExpression" + }, + "start": 34, + "type": "VariableDeclarator" } ], - "kind": "const" + "end": 48, + "kind": "const", + "start": 34, + "type": "VariableDeclaration", + "type": "VariableDeclaration" }, { - "type": "VariableDeclaration", - "type": "VariableDeclaration", - "start": 51, - "end": 64, "declarations": [ { - "type": "VariableDeclarator", - "start": 51, "end": 64, "id": { - "type": "Identifier", - "start": 51, "end": 52, - "name": "x" + "name": "x", + "start": 51, + "type": "Identifier" }, "init": { - "type": "MemberExpression", - "type": "MemberExpression", - "start": 55, + "computed": false, "end": 64, "object": { - "type": "Identifier", - "type": "Identifier", - "start": 55, "end": 61, - "name": "center" + "name": "center", + "start": 55, + "type": "Identifier", + "type": "Identifier" }, "property": { - "type": "Literal", - "type": "Literal", - "start": 62, "end": 63, - "value": 0, - "raw": "0" + "raw": "0", + "start": 62, + "type": "Literal", + "type": "Literal", + "value": 0 }, - "computed": false - } + "start": 55, + "type": "MemberExpression", + "type": "MemberExpression" + }, + "start": 51, + "type": "VariableDeclarator" } ], - "kind": "const" + "end": 64, + "kind": "const", + "start": 51, + "type": "VariableDeclaration", + "type": "VariableDeclaration" }, { - "type": "VariableDeclaration", - "type": "VariableDeclaration", - "start": 67, - "end": 80, "declarations": [ { - "type": "VariableDeclarator", - "start": 67, "end": 80, "id": { - "type": "Identifier", - "start": 67, "end": 68, - "name": "y" + "name": "y", + "start": 67, + "type": "Identifier" }, "init": { - "type": "MemberExpression", - "type": "MemberExpression", - "start": 71, + "computed": false, "end": 80, "object": { - "type": "Identifier", - "type": "Identifier", - "start": 71, "end": 77, - "name": "center" + "name": "center", + "start": 71, + "type": "Identifier", + "type": "Identifier" }, "property": { - "type": "Literal", - "type": "Literal", - "start": 78, "end": 79, - "value": 1, - "raw": "1" + "raw": "1", + "start": 78, + "type": "Literal", + "type": "Literal", + "value": 1 }, - "computed": false - } + "start": 71, + "type": "MemberExpression", + "type": "MemberExpression" + }, + "start": 67, + "type": "VariableDeclarator" } ], - "kind": "const" + "end": 80, + "kind": "const", + "start": 67, + "type": "VariableDeclaration", + "type": "VariableDeclaration" }, { - "type": "VariableDeclaration", - "type": "VariableDeclaration", - "start": 83, - "end": 104, "declarations": [ { - "type": "VariableDeclarator", - "start": 83, "end": 104, "id": { - "type": "Identifier", - "start": 83, "end": 85, - "name": "p0" + "name": "p0", + "start": 83, + "type": "Identifier" }, "init": { - "type": "ArrayExpression", - "type": "ArrayExpression", - "start": 88, - "end": 104, "elements": [ { - "type": "BinaryExpression", - "type": "BinaryExpression", - "start": 89, "end": 95, - "operator": "+", "left": { - "type": "UnaryExpression", - "type": "UnaryExpression", - "start": 89, + "argument": { + "end": 91, + "name": "l", + "start": 90, + "type": "Identifier", + "type": "Identifier" + }, "end": 91, "operator": "-", - "argument": { - "type": "Identifier", - "type": "Identifier", - "start": 90, - "end": 91, - "name": "l" - } + "start": 89, + "type": "UnaryExpression", + "type": "UnaryExpression" }, + "operator": "+", "right": { - "type": "Identifier", - "type": "Identifier", - "start": 94, "end": 95, - "name": "x" - } + "name": "x", + "start": 94, + "type": "Identifier", + "type": "Identifier" + }, + "start": 89, + "type": "BinaryExpression", + "type": "BinaryExpression" }, { - "type": "BinaryExpression", - "type": "BinaryExpression", - "start": 97, "end": 103, - "operator": "+", "left": { - "type": "UnaryExpression", - "type": "UnaryExpression", - "start": 97, + "argument": { + "end": 99, + "name": "l", + "start": 98, + "type": "Identifier", + "type": "Identifier" + }, "end": 99, "operator": "-", - "argument": { - "type": "Identifier", - "type": "Identifier", - "start": 98, - "end": 99, - "name": "l" - } + "start": 97, + "type": "UnaryExpression", + "type": "UnaryExpression" }, + "operator": "+", "right": { - "type": "Identifier", - "type": "Identifier", - "start": 102, "end": 103, - "name": "y" - } + "name": "y", + "start": 102, + "type": "Identifier", + "type": "Identifier" + }, + "start": 97, + "type": "BinaryExpression", + "type": "BinaryExpression" } - ] - } + ], + "end": 104, + "start": 88, + "type": "ArrayExpression", + "type": "ArrayExpression" + }, + "start": 83, + "type": "VariableDeclarator" } ], - "kind": "const" + "end": 104, + "kind": "const", + "start": 83, + "type": "VariableDeclaration", + "type": "VariableDeclaration" }, { - "type": "VariableDeclaration", - "type": "VariableDeclaration", - "start": 107, - "end": 127, "declarations": [ { - "type": "VariableDeclarator", - "start": 107, "end": 127, "id": { - "type": "Identifier", - "start": 107, "end": 109, - "name": "p1" + "name": "p1", + "start": 107, + "type": "Identifier" }, "init": { - "type": "ArrayExpression", - "type": "ArrayExpression", - "start": 112, - "end": 127, "elements": [ { - "type": "BinaryExpression", - "type": "BinaryExpression", - "start": 113, "end": 119, - "operator": "+", "left": { - "type": "UnaryExpression", - "type": "UnaryExpression", - "start": 113, + "argument": { + "end": 115, + "name": "l", + "start": 114, + "type": "Identifier", + "type": "Identifier" + }, "end": 115, "operator": "-", - "argument": { - "type": "Identifier", - "type": "Identifier", - "start": 114, - "end": 115, - "name": "l" - } + "start": 113, + "type": "UnaryExpression", + "type": "UnaryExpression" }, + "operator": "+", "right": { - "type": "Identifier", - "type": "Identifier", - "start": 118, "end": 119, - "name": "x" - } + "name": "x", + "start": 118, + "type": "Identifier", + "type": "Identifier" + }, + "start": 113, + "type": "BinaryExpression", + "type": "BinaryExpression" }, { - "type": "BinaryExpression", - "type": "BinaryExpression", - "start": 121, "end": 126, - "operator": "+", "left": { - "type": "Identifier", - "type": "Identifier", - "start": 121, "end": 122, - "name": "l" + "name": "l", + "start": 121, + "type": "Identifier", + "type": "Identifier" }, + "operator": "+", "right": { - "type": "Identifier", - "type": "Identifier", - "start": 125, "end": 126, - "name": "y" - } + "name": "y", + "start": 125, + "type": "Identifier", + "type": "Identifier" + }, + "start": 121, + "type": "BinaryExpression", + "type": "BinaryExpression" } - ] - } + ], + "end": 127, + "start": 112, + "type": "ArrayExpression", + "type": "ArrayExpression" + }, + "start": 107, + "type": "VariableDeclarator" } ], - "kind": "const" + "end": 127, + "kind": "const", + "start": 107, + "type": "VariableDeclaration", + "type": "VariableDeclaration" }, { - "type": "VariableDeclaration", - "type": "VariableDeclaration", - "start": 130, - "end": 149, "declarations": [ { - "type": "VariableDeclarator", - "start": 130, "end": 149, "id": { - "type": "Identifier", - "start": 130, "end": 132, - "name": "p2" + "name": "p2", + "start": 130, + "type": "Identifier" }, "init": { - "type": "ArrayExpression", - "type": "ArrayExpression", - "start": 135, - "end": 149, "elements": [ { - "type": "BinaryExpression", - "type": "BinaryExpression", - "start": 136, "end": 141, - "operator": "+", "left": { - "type": "Identifier", - "type": "Identifier", - "start": 136, "end": 137, - "name": "l" + "name": "l", + "start": 136, + "type": "Identifier", + "type": "Identifier" }, + "operator": "+", "right": { - "type": "Identifier", - "type": "Identifier", - "start": 140, "end": 141, - "name": "x" - } + "name": "x", + "start": 140, + "type": "Identifier", + "type": "Identifier" + }, + "start": 136, + "type": "BinaryExpression", + "type": "BinaryExpression" }, { - "type": "BinaryExpression", - "type": "BinaryExpression", - "start": 143, "end": 148, - "operator": "+", "left": { - "type": "Identifier", - "type": "Identifier", - "start": 143, "end": 144, - "name": "l" + "name": "l", + "start": 143, + "type": "Identifier", + "type": "Identifier" }, + "operator": "+", "right": { - "type": "Identifier", - "type": "Identifier", - "start": 147, "end": 148, - "name": "y" - } + "name": "y", + "start": 147, + "type": "Identifier", + "type": "Identifier" + }, + "start": 143, + "type": "BinaryExpression", + "type": "BinaryExpression" } - ] - } + ], + "end": 149, + "start": 135, + "type": "ArrayExpression", + "type": "ArrayExpression" + }, + "start": 130, + "type": "VariableDeclarator" } ], - "kind": "const" + "end": 149, + "kind": "const", + "start": 130, + "type": "VariableDeclaration", + "type": "VariableDeclaration" }, { - "type": "VariableDeclaration", - "type": "VariableDeclaration", - "start": 152, - "end": 172, "declarations": [ { - "type": "VariableDeclarator", - "start": 152, "end": 172, "id": { - "type": "Identifier", - "start": 152, "end": 154, - "name": "p3" + "name": "p3", + "start": 152, + "type": "Identifier" }, "init": { - "type": "ArrayExpression", - "type": "ArrayExpression", - "start": 157, - "end": 172, "elements": [ { - "type": "BinaryExpression", - "type": "BinaryExpression", - "start": 158, "end": 163, - "operator": "+", "left": { - "type": "Identifier", - "type": "Identifier", - "start": 158, "end": 159, - "name": "l" + "name": "l", + "start": 158, + "type": "Identifier", + "type": "Identifier" }, + "operator": "+", "right": { - "type": "Identifier", - "type": "Identifier", - "start": 162, "end": 163, - "name": "x" - } + "name": "x", + "start": 162, + "type": "Identifier", + "type": "Identifier" + }, + "start": 158, + "type": "BinaryExpression", + "type": "BinaryExpression" }, { - "type": "BinaryExpression", - "type": "BinaryExpression", - "start": 165, "end": 171, - "operator": "+", "left": { - "type": "UnaryExpression", - "type": "UnaryExpression", - "start": 165, + "argument": { + "end": 167, + "name": "l", + "start": 166, + "type": "Identifier", + "type": "Identifier" + }, "end": 167, "operator": "-", - "argument": { - "type": "Identifier", - "type": "Identifier", - "start": 166, - "end": 167, - "name": "l" - } + "start": 165, + "type": "UnaryExpression", + "type": "UnaryExpression" }, + "operator": "+", "right": { - "type": "Identifier", - "type": "Identifier", - "start": 170, "end": 171, - "name": "y" - } + "name": "y", + "start": 170, + "type": "Identifier", + "type": "Identifier" + }, + "start": 165, + "type": "BinaryExpression", + "type": "BinaryExpression" } - ] - } + ], + "end": 172, + "start": 157, + "type": "ArrayExpression", + "type": "ArrayExpression" + }, + "start": 152, + "type": "VariableDeclarator" } ], - "kind": "const" + "end": 172, + "kind": "const", + "start": 152, + "type": "VariableDeclaration", + "type": "VariableDeclaration" }, { - "type": "ReturnStatement", - "type": "ReturnStatement", - "start": 176, - "end": 314, "argument": { - "type": "PipeExpression", - "type": "PipeExpression", - "start": 183, - "end": 314, "body": [ { - "type": "CallExpression", - "type": "CallExpression", - "start": 183, - "end": 200, - "callee": { - "type": "Identifier", - "start": 183, - "end": 196, - "name": "startSketchAt" - }, "arguments": [ { - "type": "Identifier", - "type": "Identifier", - "start": 197, "end": 199, - "name": "p0" + "name": "p0", + "start": 197, + "type": "Identifier", + "type": "Identifier" } ], - "optional": false + "callee": { + "end": 196, + "name": "startSketchAt", + "start": 183, + "type": "Identifier" + }, + "end": 200, + "optional": false, + "start": 183, + "type": "CallExpression", + "type": "CallExpression" }, { - "type": "CallExpression", - "type": "CallExpression", - "start": 206, - "end": 219, - "callee": { - "type": "Identifier", - "start": 206, - "end": 212, - "name": "lineTo" - }, "arguments": [ { - "type": "Identifier", - "type": "Identifier", - "start": 213, "end": 215, - "name": "p1" + "name": "p1", + "start": 213, + "type": "Identifier", + "type": "Identifier" }, { - "type": "PipeSubstitution", - "type": "PipeSubstitution", + "end": 218, "start": 217, - "end": 218 + "type": "PipeSubstitution", + "type": "PipeSubstitution" } ], - "optional": false + "callee": { + "end": 212, + "name": "lineTo", + "start": 206, + "type": "Identifier" + }, + "end": 219, + "optional": false, + "start": 206, + "type": "CallExpression", + "type": "CallExpression" }, { - "type": "CallExpression", - "type": "CallExpression", - "start": 225, - "end": 238, - "callee": { - "type": "Identifier", - "start": 225, - "end": 231, - "name": "lineTo" - }, "arguments": [ { - "type": "Identifier", - "type": "Identifier", - "start": 232, "end": 234, - "name": "p2" + "name": "p2", + "start": 232, + "type": "Identifier", + "type": "Identifier" }, { - "type": "PipeSubstitution", - "type": "PipeSubstitution", + "end": 237, "start": 236, - "end": 237 + "type": "PipeSubstitution", + "type": "PipeSubstitution" } ], - "optional": false + "callee": { + "end": 231, + "name": "lineTo", + "start": 225, + "type": "Identifier" + }, + "end": 238, + "optional": false, + "start": 225, + "type": "CallExpression", + "type": "CallExpression" }, { - "type": "CallExpression", - "type": "CallExpression", - "start": 244, - "end": 257, - "callee": { - "type": "Identifier", - "start": 244, - "end": 250, - "name": "lineTo" - }, "arguments": [ { - "type": "Identifier", - "type": "Identifier", - "start": 251, "end": 253, - "name": "p3" + "name": "p3", + "start": 251, + "type": "Identifier", + "type": "Identifier" }, { - "type": "PipeSubstitution", - "type": "PipeSubstitution", + "end": 256, "start": 255, - "end": 256 + "type": "PipeSubstitution", + "type": "PipeSubstitution" } ], - "optional": false + "callee": { + "end": 250, + "name": "lineTo", + "start": 244, + "type": "Identifier" + }, + "end": 257, + "optional": false, + "start": 244, + "type": "CallExpression", + "type": "CallExpression" }, { - "type": "CallExpression", - "type": "CallExpression", - "start": 263, - "end": 276, - "callee": { - "type": "Identifier", - "start": 263, - "end": 269, - "name": "lineTo" - }, "arguments": [ { - "type": "Identifier", - "type": "Identifier", - "start": 270, "end": 272, - "name": "p0" + "name": "p0", + "start": 270, + "type": "Identifier", + "type": "Identifier" }, { - "type": "PipeSubstitution", - "type": "PipeSubstitution", + "end": 275, "start": 274, - "end": 275 + "type": "PipeSubstitution", + "type": "PipeSubstitution" } ], - "optional": false + "callee": { + "end": 269, + "name": "lineTo", + "start": 263, + "type": "Identifier" + }, + "end": 276, + "optional": false, + "start": 263, + "type": "CallExpression", + "type": "CallExpression" }, { - "type": "CallExpression", - "type": "CallExpression", - "start": 282, - "end": 290, - "callee": { - "type": "Identifier", - "start": 282, - "end": 287, - "name": "close" - }, "arguments": [ { - "type": "PipeSubstitution", - "type": "PipeSubstitution", + "end": 289, "start": 288, - "end": 289 + "type": "PipeSubstitution", + "type": "PipeSubstitution" } ], - "optional": false + "callee": { + "end": 287, + "name": "close", + "start": 282, + "type": "Identifier" + }, + "end": 290, + "optional": false, + "start": 282, + "type": "CallExpression", + "type": "CallExpression" }, { - "type": "CallExpression", - "type": "CallExpression", - "start": 296, - "end": 314, - "callee": { - "type": "Identifier", - "start": 296, - "end": 303, - "name": "extrude" - }, "arguments": [ { - "type": "Identifier", - "type": "Identifier", - "start": 304, "end": 310, - "name": "length" + "name": "length", + "start": 304, + "type": "Identifier", + "type": "Identifier" }, { - "type": "PipeSubstitution", - "type": "PipeSubstitution", + "end": 313, "start": 312, - "end": 313 + "type": "PipeSubstitution", + "type": "PipeSubstitution" } ], - "optional": false + "callee": { + "end": 303, + "name": "extrude", + "start": 296, + "type": "Identifier" + }, + "end": 314, + "optional": false, + "start": 296, + "type": "CallExpression", + "type": "CallExpression" } - ] - } + ], + "end": 314, + "start": 183, + "type": "PipeExpression", + "type": "PipeExpression" + }, + "end": 314, + "start": 176, + "type": "ReturnStatement", + "type": "ReturnStatement" } ], + "end": 316, "nonCodeMeta": { "nonCodeNodes": { "6": [ { - "type": "NonCodeNode", - "start": 172, "end": 176, + "start": 172, + "type": "NonCodeNode", "value": { "type": "newLine" } } ] }, - "start": [] - } - } - } - } - ], - "kind": "fn" - }, - { - "type": "VariableDeclaration", - "type": "VariableDeclaration", - "start": 318, - "end": 343, - "declarations": [ - { - "type": "VariableDeclarator", - "start": 318, - "end": 343, - "id": { - "type": "Identifier", - "start": 318, - "end": 324, - "name": "myCube" - }, - "init": { - "type": "CallExpression", - "type": "CallExpression", - "start": 327, - "end": 343, - "callee": { - "type": "Identifier", - "start": 327, - "end": 331, - "name": "cube" + "startNodes": [] + }, + "start": 30 }, - "arguments": [ + "end": 316, + "params": [ { - "type": "Literal", - "type": "Literal", - "start": 332, - "end": 334, - "value": 40, - "raw": "40" + "type": "Parameter", + "identifier": { + "end": 17, + "name": "length", + "start": 11, + "type": "Identifier" + }, + "optional": false }, { - "type": "ArrayExpression", - "type": "ArrayExpression", - "start": 336, - "end": 342, - "elements": [ - { - "type": "Literal", - "type": "Literal", - "start": 337, - "end": 338, - "value": 0, - "raw": "0" - }, - { - "type": "Literal", - "type": "Literal", - "start": 340, - "end": 341, - "value": 0, - "raw": "0" - } - ] + "type": "Parameter", + "identifier": { + "end": 25, + "name": "center", + "start": 19, + "type": "Identifier" + }, + "optional": false } ], - "optional": false - } + "start": 10, + "type": "FunctionExpression", + "type": "FunctionExpression" + }, + "start": 3, + "type": "VariableDeclarator" } ], - "kind": "const" + "end": 316, + "kind": "fn", + "start": 0, + "type": "VariableDeclaration", + "type": "VariableDeclaration" + }, + { + "declarations": [ + { + "end": 343, + "id": { + "end": 324, + "name": "myCube", + "start": 318, + "type": "Identifier" + }, + "init": { + "arguments": [ + { + "end": 334, + "raw": "40", + "start": 332, + "type": "Literal", + "type": "Literal", + "value": 40 + }, + { + "elements": [ + { + "end": 338, + "raw": "0", + "start": 337, + "type": "Literal", + "type": "Literal", + "value": 0 + }, + { + "end": 341, + "raw": "0", + "start": 340, + "type": "Literal", + "type": "Literal", + "value": 0 + } + ], + "end": 342, + "start": 336, + "type": "ArrayExpression", + "type": "ArrayExpression" + } + ], + "callee": { + "end": 331, + "name": "cube", + "start": 327, + "type": "Identifier" + }, + "end": 343, + "optional": false, + "start": 327, + "type": "CallExpression", + "type": "CallExpression" + }, + "start": 318, + "type": "VariableDeclarator" + } + ], + "end": 343, + "kind": "const", + "start": 318, + "type": "VariableDeclaration", + "type": "VariableDeclaration" } ], + "end": 344, "nonCodeMeta": { "nonCodeNodes": { "0": [ { - "type": "NonCodeNode", - "start": 316, "end": 318, + "start": 316, + "type": "NonCodeNode", "value": { "type": "newLine" } } ] }, - "start": [] - } + "startNodes": [] + }, + "start": 0 } } diff --git a/src/wasm-lib/kcl/tests/cube/program_memory.snap b/src/wasm-lib/kcl/tests/cube/program_memory.snap index 625b6b9a6..6e8b18ae9 100644 --- a/src/wasm-lib/kcl/tests/cube/program_memory.snap +++ b/src/wasm-lib/kcl/tests/cube/program_memory.snap @@ -1,5 +1,5 @@ --- -source: kcl/src/tests.rs +source: kcl/src/simulation_tests.rs description: Program memory after executing cube.kcl snapshot_kind: text --- @@ -34,683 +34,683 @@ snapshot_kind: text "cube": { "type": "Function", "expression": { - "type": "FunctionExpression", - "start": 10, - "end": 316, - "params": [ - { - "type": "Parameter", - "identifier": { - "type": "Identifier", - "start": 11, - "end": 17, - "name": "length" - }, - "optional": false - }, - { - "type": "Parameter", - "identifier": { - "type": "Identifier", - "start": 19, - "end": 25, - "name": "center" - }, - "optional": false - } - ], "body": { - "start": 30, - "end": 316, "body": [ { - "type": "VariableDeclaration", - "type": "VariableDeclaration", - "start": 34, - "end": 48, "declarations": [ { - "type": "VariableDeclarator", - "start": 34, "end": 48, "id": { - "type": "Identifier", - "start": 34, "end": 35, - "name": "l" + "name": "l", + "start": 34, + "type": "Identifier" }, "init": { - "type": "BinaryExpression", - "type": "BinaryExpression", - "start": 38, "end": 48, - "operator": "/", "left": { - "type": "Identifier", - "type": "Identifier", - "start": 38, "end": 44, - "name": "length" + "name": "length", + "start": 38, + "type": "Identifier", + "type": "Identifier" }, + "operator": "/", "right": { - "type": "Literal", - "type": "Literal", - "start": 47, "end": 48, - "value": 2, - "raw": "2" - } - } + "raw": "2", + "start": 47, + "type": "Literal", + "type": "Literal", + "value": 2 + }, + "start": 38, + "type": "BinaryExpression", + "type": "BinaryExpression" + }, + "start": 34, + "type": "VariableDeclarator" } ], - "kind": "const" + "end": 48, + "kind": "const", + "start": 34, + "type": "VariableDeclaration", + "type": "VariableDeclaration" }, { - "type": "VariableDeclaration", - "type": "VariableDeclaration", - "start": 51, - "end": 64, "declarations": [ { - "type": "VariableDeclarator", - "start": 51, "end": 64, "id": { - "type": "Identifier", - "start": 51, "end": 52, - "name": "x" + "name": "x", + "start": 51, + "type": "Identifier" }, "init": { - "type": "MemberExpression", - "type": "MemberExpression", - "start": 55, + "computed": false, "end": 64, "object": { - "type": "Identifier", - "type": "Identifier", - "start": 55, "end": 61, - "name": "center" + "name": "center", + "start": 55, + "type": "Identifier", + "type": "Identifier" }, "property": { - "type": "Literal", - "type": "Literal", - "start": 62, "end": 63, - "value": 0, - "raw": "0" + "raw": "0", + "start": 62, + "type": "Literal", + "type": "Literal", + "value": 0 }, - "computed": false - } + "start": 55, + "type": "MemberExpression", + "type": "MemberExpression" + }, + "start": 51, + "type": "VariableDeclarator" } ], - "kind": "const" + "end": 64, + "kind": "const", + "start": 51, + "type": "VariableDeclaration", + "type": "VariableDeclaration" }, { - "type": "VariableDeclaration", - "type": "VariableDeclaration", - "start": 67, - "end": 80, "declarations": [ { - "type": "VariableDeclarator", - "start": 67, "end": 80, "id": { - "type": "Identifier", - "start": 67, "end": 68, - "name": "y" + "name": "y", + "start": 67, + "type": "Identifier" }, "init": { - "type": "MemberExpression", - "type": "MemberExpression", - "start": 71, + "computed": false, "end": 80, "object": { - "type": "Identifier", - "type": "Identifier", - "start": 71, "end": 77, - "name": "center" + "name": "center", + "start": 71, + "type": "Identifier", + "type": "Identifier" }, "property": { - "type": "Literal", - "type": "Literal", - "start": 78, "end": 79, - "value": 1, - "raw": "1" + "raw": "1", + "start": 78, + "type": "Literal", + "type": "Literal", + "value": 1 }, - "computed": false - } + "start": 71, + "type": "MemberExpression", + "type": "MemberExpression" + }, + "start": 67, + "type": "VariableDeclarator" } ], - "kind": "const" + "end": 80, + "kind": "const", + "start": 67, + "type": "VariableDeclaration", + "type": "VariableDeclaration" }, { - "type": "VariableDeclaration", - "type": "VariableDeclaration", - "start": 83, - "end": 104, "declarations": [ { - "type": "VariableDeclarator", - "start": 83, "end": 104, "id": { - "type": "Identifier", - "start": 83, "end": 85, - "name": "p0" + "name": "p0", + "start": 83, + "type": "Identifier" }, "init": { - "type": "ArrayExpression", - "type": "ArrayExpression", - "start": 88, - "end": 104, "elements": [ { - "type": "BinaryExpression", - "type": "BinaryExpression", - "start": 89, "end": 95, - "operator": "+", "left": { - "type": "UnaryExpression", - "type": "UnaryExpression", - "start": 89, + "argument": { + "end": 91, + "name": "l", + "start": 90, + "type": "Identifier", + "type": "Identifier" + }, "end": 91, "operator": "-", - "argument": { - "type": "Identifier", - "type": "Identifier", - "start": 90, - "end": 91, - "name": "l" - } + "start": 89, + "type": "UnaryExpression", + "type": "UnaryExpression" }, + "operator": "+", "right": { - "type": "Identifier", - "type": "Identifier", - "start": 94, "end": 95, - "name": "x" - } + "name": "x", + "start": 94, + "type": "Identifier", + "type": "Identifier" + }, + "start": 89, + "type": "BinaryExpression", + "type": "BinaryExpression" }, { - "type": "BinaryExpression", - "type": "BinaryExpression", - "start": 97, "end": 103, - "operator": "+", "left": { - "type": "UnaryExpression", - "type": "UnaryExpression", - "start": 97, + "argument": { + "end": 99, + "name": "l", + "start": 98, + "type": "Identifier", + "type": "Identifier" + }, "end": 99, "operator": "-", - "argument": { - "type": "Identifier", - "type": "Identifier", - "start": 98, - "end": 99, - "name": "l" - } + "start": 97, + "type": "UnaryExpression", + "type": "UnaryExpression" }, + "operator": "+", "right": { - "type": "Identifier", - "type": "Identifier", - "start": 102, "end": 103, - "name": "y" - } + "name": "y", + "start": 102, + "type": "Identifier", + "type": "Identifier" + }, + "start": 97, + "type": "BinaryExpression", + "type": "BinaryExpression" } - ] - } + ], + "end": 104, + "start": 88, + "type": "ArrayExpression", + "type": "ArrayExpression" + }, + "start": 83, + "type": "VariableDeclarator" } ], - "kind": "const" + "end": 104, + "kind": "const", + "start": 83, + "type": "VariableDeclaration", + "type": "VariableDeclaration" }, { - "type": "VariableDeclaration", - "type": "VariableDeclaration", - "start": 107, - "end": 127, "declarations": [ { - "type": "VariableDeclarator", - "start": 107, "end": 127, "id": { - "type": "Identifier", - "start": 107, "end": 109, - "name": "p1" + "name": "p1", + "start": 107, + "type": "Identifier" }, "init": { - "type": "ArrayExpression", - "type": "ArrayExpression", - "start": 112, - "end": 127, "elements": [ { - "type": "BinaryExpression", - "type": "BinaryExpression", - "start": 113, "end": 119, - "operator": "+", "left": { - "type": "UnaryExpression", - "type": "UnaryExpression", - "start": 113, + "argument": { + "end": 115, + "name": "l", + "start": 114, + "type": "Identifier", + "type": "Identifier" + }, "end": 115, "operator": "-", - "argument": { - "type": "Identifier", - "type": "Identifier", - "start": 114, - "end": 115, - "name": "l" - } + "start": 113, + "type": "UnaryExpression", + "type": "UnaryExpression" }, + "operator": "+", "right": { - "type": "Identifier", - "type": "Identifier", - "start": 118, "end": 119, - "name": "x" - } + "name": "x", + "start": 118, + "type": "Identifier", + "type": "Identifier" + }, + "start": 113, + "type": "BinaryExpression", + "type": "BinaryExpression" }, { - "type": "BinaryExpression", - "type": "BinaryExpression", - "start": 121, "end": 126, - "operator": "+", "left": { - "type": "Identifier", - "type": "Identifier", - "start": 121, "end": 122, - "name": "l" + "name": "l", + "start": 121, + "type": "Identifier", + "type": "Identifier" }, + "operator": "+", "right": { - "type": "Identifier", - "type": "Identifier", - "start": 125, "end": 126, - "name": "y" - } + "name": "y", + "start": 125, + "type": "Identifier", + "type": "Identifier" + }, + "start": 121, + "type": "BinaryExpression", + "type": "BinaryExpression" } - ] - } + ], + "end": 127, + "start": 112, + "type": "ArrayExpression", + "type": "ArrayExpression" + }, + "start": 107, + "type": "VariableDeclarator" } ], - "kind": "const" + "end": 127, + "kind": "const", + "start": 107, + "type": "VariableDeclaration", + "type": "VariableDeclaration" }, { - "type": "VariableDeclaration", - "type": "VariableDeclaration", - "start": 130, - "end": 149, "declarations": [ { - "type": "VariableDeclarator", - "start": 130, "end": 149, "id": { - "type": "Identifier", - "start": 130, "end": 132, - "name": "p2" + "name": "p2", + "start": 130, + "type": "Identifier" }, "init": { - "type": "ArrayExpression", - "type": "ArrayExpression", - "start": 135, - "end": 149, "elements": [ { - "type": "BinaryExpression", - "type": "BinaryExpression", - "start": 136, "end": 141, - "operator": "+", "left": { - "type": "Identifier", - "type": "Identifier", - "start": 136, "end": 137, - "name": "l" + "name": "l", + "start": 136, + "type": "Identifier", + "type": "Identifier" }, + "operator": "+", "right": { - "type": "Identifier", - "type": "Identifier", - "start": 140, "end": 141, - "name": "x" - } + "name": "x", + "start": 140, + "type": "Identifier", + "type": "Identifier" + }, + "start": 136, + "type": "BinaryExpression", + "type": "BinaryExpression" }, { - "type": "BinaryExpression", - "type": "BinaryExpression", - "start": 143, "end": 148, - "operator": "+", "left": { - "type": "Identifier", - "type": "Identifier", - "start": 143, "end": 144, - "name": "l" + "name": "l", + "start": 143, + "type": "Identifier", + "type": "Identifier" }, + "operator": "+", "right": { - "type": "Identifier", - "type": "Identifier", - "start": 147, "end": 148, - "name": "y" - } + "name": "y", + "start": 147, + "type": "Identifier", + "type": "Identifier" + }, + "start": 143, + "type": "BinaryExpression", + "type": "BinaryExpression" } - ] - } + ], + "end": 149, + "start": 135, + "type": "ArrayExpression", + "type": "ArrayExpression" + }, + "start": 130, + "type": "VariableDeclarator" } ], - "kind": "const" + "end": 149, + "kind": "const", + "start": 130, + "type": "VariableDeclaration", + "type": "VariableDeclaration" }, { - "type": "VariableDeclaration", - "type": "VariableDeclaration", - "start": 152, - "end": 172, "declarations": [ { - "type": "VariableDeclarator", - "start": 152, "end": 172, "id": { - "type": "Identifier", - "start": 152, "end": 154, - "name": "p3" + "name": "p3", + "start": 152, + "type": "Identifier" }, "init": { - "type": "ArrayExpression", - "type": "ArrayExpression", - "start": 157, - "end": 172, "elements": [ { - "type": "BinaryExpression", - "type": "BinaryExpression", - "start": 158, "end": 163, - "operator": "+", "left": { - "type": "Identifier", - "type": "Identifier", - "start": 158, "end": 159, - "name": "l" + "name": "l", + "start": 158, + "type": "Identifier", + "type": "Identifier" }, + "operator": "+", "right": { - "type": "Identifier", - "type": "Identifier", - "start": 162, "end": 163, - "name": "x" - } + "name": "x", + "start": 162, + "type": "Identifier", + "type": "Identifier" + }, + "start": 158, + "type": "BinaryExpression", + "type": "BinaryExpression" }, { - "type": "BinaryExpression", - "type": "BinaryExpression", - "start": 165, "end": 171, - "operator": "+", "left": { - "type": "UnaryExpression", - "type": "UnaryExpression", - "start": 165, + "argument": { + "end": 167, + "name": "l", + "start": 166, + "type": "Identifier", + "type": "Identifier" + }, "end": 167, "operator": "-", - "argument": { - "type": "Identifier", - "type": "Identifier", - "start": 166, - "end": 167, - "name": "l" - } + "start": 165, + "type": "UnaryExpression", + "type": "UnaryExpression" }, + "operator": "+", "right": { - "type": "Identifier", - "type": "Identifier", - "start": 170, "end": 171, - "name": "y" - } + "name": "y", + "start": 170, + "type": "Identifier", + "type": "Identifier" + }, + "start": 165, + "type": "BinaryExpression", + "type": "BinaryExpression" } - ] - } + ], + "end": 172, + "start": 157, + "type": "ArrayExpression", + "type": "ArrayExpression" + }, + "start": 152, + "type": "VariableDeclarator" } ], - "kind": "const" + "end": 172, + "kind": "const", + "start": 152, + "type": "VariableDeclaration", + "type": "VariableDeclaration" }, { - "type": "ReturnStatement", - "type": "ReturnStatement", - "start": 176, - "end": 314, "argument": { - "type": "PipeExpression", - "type": "PipeExpression", - "start": 183, - "end": 314, "body": [ { - "type": "CallExpression", - "type": "CallExpression", - "start": 183, - "end": 200, - "callee": { - "type": "Identifier", - "start": 183, - "end": 196, - "name": "startSketchAt" - }, "arguments": [ { - "type": "Identifier", - "type": "Identifier", - "start": 197, "end": 199, - "name": "p0" + "name": "p0", + "start": 197, + "type": "Identifier", + "type": "Identifier" } ], - "optional": false + "callee": { + "end": 196, + "name": "startSketchAt", + "start": 183, + "type": "Identifier" + }, + "end": 200, + "optional": false, + "start": 183, + "type": "CallExpression", + "type": "CallExpression" }, { - "type": "CallExpression", - "type": "CallExpression", - "start": 206, - "end": 219, - "callee": { - "type": "Identifier", - "start": 206, - "end": 212, - "name": "lineTo" - }, "arguments": [ { - "type": "Identifier", - "type": "Identifier", - "start": 213, "end": 215, - "name": "p1" + "name": "p1", + "start": 213, + "type": "Identifier", + "type": "Identifier" }, { - "type": "PipeSubstitution", - "type": "PipeSubstitution", + "end": 218, "start": 217, - "end": 218 + "type": "PipeSubstitution", + "type": "PipeSubstitution" } ], - "optional": false + "callee": { + "end": 212, + "name": "lineTo", + "start": 206, + "type": "Identifier" + }, + "end": 219, + "optional": false, + "start": 206, + "type": "CallExpression", + "type": "CallExpression" }, { - "type": "CallExpression", - "type": "CallExpression", - "start": 225, - "end": 238, - "callee": { - "type": "Identifier", - "start": 225, - "end": 231, - "name": "lineTo" - }, "arguments": [ { - "type": "Identifier", - "type": "Identifier", - "start": 232, "end": 234, - "name": "p2" + "name": "p2", + "start": 232, + "type": "Identifier", + "type": "Identifier" }, { - "type": "PipeSubstitution", - "type": "PipeSubstitution", + "end": 237, "start": 236, - "end": 237 + "type": "PipeSubstitution", + "type": "PipeSubstitution" } ], - "optional": false + "callee": { + "end": 231, + "name": "lineTo", + "start": 225, + "type": "Identifier" + }, + "end": 238, + "optional": false, + "start": 225, + "type": "CallExpression", + "type": "CallExpression" }, { - "type": "CallExpression", - "type": "CallExpression", - "start": 244, - "end": 257, - "callee": { - "type": "Identifier", - "start": 244, - "end": 250, - "name": "lineTo" - }, "arguments": [ { - "type": "Identifier", - "type": "Identifier", - "start": 251, "end": 253, - "name": "p3" + "name": "p3", + "start": 251, + "type": "Identifier", + "type": "Identifier" }, { - "type": "PipeSubstitution", - "type": "PipeSubstitution", + "end": 256, "start": 255, - "end": 256 + "type": "PipeSubstitution", + "type": "PipeSubstitution" } ], - "optional": false + "callee": { + "end": 250, + "name": "lineTo", + "start": 244, + "type": "Identifier" + }, + "end": 257, + "optional": false, + "start": 244, + "type": "CallExpression", + "type": "CallExpression" }, { - "type": "CallExpression", - "type": "CallExpression", - "start": 263, - "end": 276, - "callee": { - "type": "Identifier", - "start": 263, - "end": 269, - "name": "lineTo" - }, "arguments": [ { - "type": "Identifier", - "type": "Identifier", - "start": 270, "end": 272, - "name": "p0" + "name": "p0", + "start": 270, + "type": "Identifier", + "type": "Identifier" }, { - "type": "PipeSubstitution", - "type": "PipeSubstitution", + "end": 275, "start": 274, - "end": 275 + "type": "PipeSubstitution", + "type": "PipeSubstitution" } ], - "optional": false + "callee": { + "end": 269, + "name": "lineTo", + "start": 263, + "type": "Identifier" + }, + "end": 276, + "optional": false, + "start": 263, + "type": "CallExpression", + "type": "CallExpression" }, { - "type": "CallExpression", - "type": "CallExpression", - "start": 282, - "end": 290, - "callee": { - "type": "Identifier", - "start": 282, - "end": 287, - "name": "close" - }, "arguments": [ { - "type": "PipeSubstitution", - "type": "PipeSubstitution", + "end": 289, "start": 288, - "end": 289 + "type": "PipeSubstitution", + "type": "PipeSubstitution" } ], - "optional": false + "callee": { + "end": 287, + "name": "close", + "start": 282, + "type": "Identifier" + }, + "end": 290, + "optional": false, + "start": 282, + "type": "CallExpression", + "type": "CallExpression" }, { - "type": "CallExpression", - "type": "CallExpression", - "start": 296, - "end": 314, - "callee": { - "type": "Identifier", - "start": 296, - "end": 303, - "name": "extrude" - }, "arguments": [ { - "type": "Identifier", - "type": "Identifier", - "start": 304, "end": 310, - "name": "length" + "name": "length", + "start": 304, + "type": "Identifier", + "type": "Identifier" }, { - "type": "PipeSubstitution", - "type": "PipeSubstitution", + "end": 313, "start": 312, - "end": 313 + "type": "PipeSubstitution", + "type": "PipeSubstitution" } ], - "optional": false + "callee": { + "end": 303, + "name": "extrude", + "start": 296, + "type": "Identifier" + }, + "end": 314, + "optional": false, + "start": 296, + "type": "CallExpression", + "type": "CallExpression" } - ] - } + ], + "end": 314, + "start": 183, + "type": "PipeExpression", + "type": "PipeExpression" + }, + "end": 314, + "start": 176, + "type": "ReturnStatement", + "type": "ReturnStatement" } ], + "end": 316, "nonCodeMeta": { "nonCodeNodes": { "6": [ { - "type": "NonCodeNode", - "start": 172, "end": 176, + "start": 172, + "type": "NonCodeNode", "value": { "type": "newLine" } } ] }, - "start": [] + "startNodes": [] + }, + "start": 30 + }, + "end": 316, + "params": [ + { + "type": "Parameter", + "identifier": { + "end": 17, + "name": "length", + "start": 11, + "type": "Identifier" + }, + "optional": false + }, + { + "type": "Parameter", + "identifier": { + "end": 25, + "name": "center", + "start": 19, + "type": "Identifier" + }, + "optional": false } - } + ], + "start": 10, + "type": "FunctionExpression" }, "memory": { "environments": [ diff --git a/src/wasm-lib/src/wasm.rs b/src/wasm-lib/src/wasm.rs index 143f6fa7a..5d5393182 100644 --- a/src/wasm-lib/src/wasm.rs +++ b/src/wasm-lib/src/wasm.rs @@ -7,7 +7,12 @@ use std::{ use futures::stream::TryStreamExt; use gloo_utils::format::JsValueSerdeExt; -use kcl_lib::{coredump::CoreDump, engine::EngineManager, executor::ExecutorSettings}; +use kcl_lib::{ + ast::types::{Node, Program}, + coredump::CoreDump, + engine::EngineManager, + executor::ExecutorSettings, +}; use tower_lsp::{LspService, Server}; use wasm_bindgen::prelude::*; @@ -26,7 +31,7 @@ pub async fn execute_wasm( console_error_panic_hook::set_once(); // deserialize the ast from a stringified json - let program: kcl_lib::ast::types::Program = serde_json::from_str(program_str).map_err(|e| e.to_string())?; + let program: Node = serde_json::from_str(program_str).map_err(|e| e.to_string())?; let memory: kcl_lib::executor::ProgramMemory = serde_json::from_str(memory_str).map_err(|e| e.to_string())?; let id_generator: kcl_lib::executor::IdGenerator = serde_json::from_str(id_generator_str).map_err(|e| e.to_string())?; @@ -79,7 +84,7 @@ pub async fn execute_wasm( pub async fn kcl_lint(program_str: &str) -> Result { console_error_panic_hook::set_once(); - let program: kcl_lib::ast::types::Program = serde_json::from_str(program_str).map_err(|e| e.to_string())?; + let program: Node = serde_json::from_str(program_str).map_err(|e| e.to_string())?; let mut findings = vec![]; for discovered_finding in program.lint_all().into_iter().flatten() { findings.push(discovered_finding); @@ -138,7 +143,7 @@ pub async fn modify_ast_for_sketch_wasm( console_error_panic_hook::set_once(); // deserialize the ast from a stringified json - let mut program: kcl_lib::ast::types::Program = serde_json::from_str(program_str).map_err(|e| e.to_string())?; + let mut program: Node = serde_json::from_str(program_str).map_err(|e| e.to_string())?; let plane: kcl_lib::executor::PlaneType = serde_json::from_str(plane_type).map_err(|e| e.to_string())?; diff --git a/src/wasm-lib/tests/executor/no_visuals.rs b/src/wasm-lib/tests/executor/no_visuals.rs index b5be2cad6..6bd6fc1b0 100644 --- a/src/wasm-lib/tests/executor/no_visuals.rs +++ b/src/wasm-lib/tests/executor/no_visuals.rs @@ -1,5 +1,5 @@ use kcl_lib::{ - ast::types::Program, + ast::types::{Node, Program}, errors::KclError, executor::{ExecutorContext, IdGenerator}, parser, @@ -58,7 +58,7 @@ async fn run(code: &str) { } } -async fn setup(program: &str) -> (ExecutorContext, Program, IdGenerator) { +async fn setup(program: &str) -> (ExecutorContext, Node, IdGenerator) { let tokens = kcl_lib::token::lexer(program).unwrap(); let parser = kcl_lib::parser::Parser::new(tokens); let program = parser.ast().unwrap(); diff --git a/src/wasm-lib/tests/modify/main.rs b/src/wasm-lib/tests/modify/main.rs index 43032153a..bf8f20bab 100644 --- a/src/wasm-lib/tests/modify/main.rs +++ b/src/wasm-lib/tests/modify/main.rs @@ -1,13 +1,16 @@ use anyhow::Result; use kcl_lib::{ - ast::{modify::modify_ast_for_sketch, types::Program}, + ast::{ + modify::modify_ast_for_sketch, + types::{Node, Program}, + }, executor::{ExecutorContext, IdGenerator, KclValue, PlaneType, Sketch, SourceRange}, }; use kittycad_modeling_cmds::{each_cmd as mcmd, length_unit::LengthUnit, shared::Point3d, ModelingCmd}; use pretty_assertions::assert_eq; /// Setup the engine and parse code for an ast. -async fn setup(code: &str, name: &str) -> Result<(ExecutorContext, Program, uuid::Uuid)> { +async fn setup(code: &str, name: &str) -> Result<(ExecutorContext, Node, uuid::Uuid)> { let tokens = kcl_lib::token::lexer(code)?; let parser = kcl_lib::parser::Parser::new(tokens); let program = parser.ast()?;