zoo-kcl 0.3.103__tar.gz → 0.3.104__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Potentially problematic release.
This version of zoo-kcl might be problematic. Click here for more details.
- {zoo_kcl-0.3.103 → zoo_kcl-0.3.104}/Cargo.lock +14 -14
- {zoo_kcl-0.3.103 → zoo_kcl-0.3.104}/Cargo.toml +5 -4
- {zoo_kcl-0.3.103 → zoo_kcl-0.3.104}/PKG-INFO +1 -1
- {zoo_kcl-0.3.103 → zoo_kcl-0.3.104}/kcl-api/Cargo.toml +1 -1
- {zoo_kcl-0.3.103 → zoo_kcl-0.3.104}/kcl-derive-docs/Cargo.toml +1 -1
- {zoo_kcl-0.3.103 → zoo_kcl-0.3.104}/kcl-derive-docs/src/example_tests.rs +1 -0
- {zoo_kcl-0.3.103 → zoo_kcl-0.3.104}/kcl-directory-test-macro/Cargo.toml +1 -1
- {zoo_kcl-0.3.103 → zoo_kcl-0.3.104}/kcl-error/Cargo.toml +1 -1
- {zoo_kcl-0.3.103 → zoo_kcl-0.3.104}/kcl-error/src/lib.rs +12 -0
- {zoo_kcl-0.3.103 → zoo_kcl-0.3.104}/kcl-lib/Cargo.toml +1 -1
- {zoo_kcl-0.3.103 → zoo_kcl-0.3.104}/kcl-lib/src/execution/annotations.rs +35 -2
- {zoo_kcl-0.3.103 → zoo_kcl-0.3.104}/kcl-lib/src/execution/artifact.rs +36 -0
- {zoo_kcl-0.3.103 → zoo_kcl-0.3.104}/kcl-lib/src/execution/exec_ast.rs +178 -32
- {zoo_kcl-0.3.103 → zoo_kcl-0.3.104}/kcl-lib/src/execution/fn_call.rs +49 -13
- {zoo_kcl-0.3.103 → zoo_kcl-0.3.104}/kcl-lib/src/execution/kcl_value.rs +15 -4
- {zoo_kcl-0.3.103 → zoo_kcl-0.3.104}/kcl-lib/src/execution/memory.rs +5 -2
- {zoo_kcl-0.3.103 → zoo_kcl-0.3.104}/kcl-lib/src/execution/state.rs +4 -1
- {zoo_kcl-0.3.103 → zoo_kcl-0.3.104}/kcl-lib/src/lib.rs +9 -0
- zoo_kcl-0.3.104/kcl-lib/src/lint/mod.rs +4 -0
- {zoo_kcl-0.3.103 → zoo_kcl-0.3.104}/kcl-lib/src/lint/rule.rs +49 -8
- {zoo_kcl-0.3.103 → zoo_kcl-0.3.104}/kcl-lib/src/parsing/ast/types/mod.rs +98 -1
- {zoo_kcl-0.3.103 → zoo_kcl-0.3.104}/kcl-lib/src/simulation_tests.rs +21 -0
- {zoo_kcl-0.3.103 → zoo_kcl-0.3.104}/kcl-lib/src/std/chamfer.rs +66 -9
- {zoo_kcl-0.3.103 → zoo_kcl-0.3.104}/kcl-lib/src/std/gdt.rs +14 -1
- {zoo_kcl-0.3.103 → zoo_kcl-0.3.104}/kcl-lib/src/std/mod.rs +33 -42
- {zoo_kcl-0.3.103 → zoo_kcl-0.3.104}/kcl-lib/std/appearance.kcl +1 -1
- {zoo_kcl-0.3.103 → zoo_kcl-0.3.104}/kcl-lib/std/array.kcl +6 -6
- {zoo_kcl-0.3.103 → zoo_kcl-0.3.104}/kcl-lib/std/gdt.kcl +3 -3
- {zoo_kcl-0.3.103 → zoo_kcl-0.3.104}/kcl-lib/std/hole.kcl +23 -14
- {zoo_kcl-0.3.103 → zoo_kcl-0.3.104}/kcl-lib/std/math.kcl +24 -23
- {zoo_kcl-0.3.103 → zoo_kcl-0.3.104}/kcl-lib/std/prelude.kcl +5 -5
- {zoo_kcl-0.3.103 → zoo_kcl-0.3.104}/kcl-lib/std/sketch.kcl +56 -56
- {zoo_kcl-0.3.103 → zoo_kcl-0.3.104}/kcl-lib/std/sketch2.kcl +5 -5
- {zoo_kcl-0.3.103 → zoo_kcl-0.3.104}/kcl-lib/std/solid.kcl +48 -12
- {zoo_kcl-0.3.103 → zoo_kcl-0.3.104}/kcl-lib/std/transform.kcl +4 -4
- {zoo_kcl-0.3.103 → zoo_kcl-0.3.104}/kcl-lib/std/units.kcl +8 -0
- {zoo_kcl-0.3.103 → zoo_kcl-0.3.104}/kcl-lib/std/vector.kcl +8 -0
- {zoo_kcl-0.3.103 → zoo_kcl-0.3.104}/kcl-python-bindings/Cargo.toml +1 -1
- {zoo_kcl-0.3.103 → zoo_kcl-0.3.104}/kcl-python-bindings/kcl.pyi +14 -0
- {zoo_kcl-0.3.103 → zoo_kcl-0.3.104}/kcl-python-bindings/src/lib.rs +40 -0
- zoo_kcl-0.3.103/kcl-lib/src/lint/mod.rs +0 -4
- {zoo_kcl-0.3.103 → zoo_kcl-0.3.104}/kcl-api/src/lib.rs +0 -0
- {zoo_kcl-0.3.103 → zoo_kcl-0.3.104}/kcl-api/src/sketch.rs +0 -0
- {zoo_kcl-0.3.103 → zoo_kcl-0.3.104}/kcl-derive-docs/src/lib.rs +0 -0
- {zoo_kcl-0.3.103 → zoo_kcl-0.3.104}/kcl-derive-docs/tests/args_with_lifetime.gen +0 -0
- {zoo_kcl-0.3.103 → zoo_kcl-0.3.104}/kcl-derive-docs/tests/args_with_refs.gen +0 -0
- {zoo_kcl-0.3.103 → zoo_kcl-0.3.104}/kcl-derive-docs/tests/array.gen +0 -0
- {zoo_kcl-0.3.103 → zoo_kcl-0.3.104}/kcl-derive-docs/tests/box.gen +0 -0
- {zoo_kcl-0.3.103 → zoo_kcl-0.3.104}/kcl-derive-docs/tests/doc_comment_with_code.gen +0 -0
- {zoo_kcl-0.3.103 → zoo_kcl-0.3.104}/kcl-derive-docs/tests/lineTo.gen +0 -0
- {zoo_kcl-0.3.103 → zoo_kcl-0.3.104}/kcl-derive-docs/tests/min.gen +0 -0
- {zoo_kcl-0.3.103 → zoo_kcl-0.3.104}/kcl-derive-docs/tests/option.gen +0 -0
- {zoo_kcl-0.3.103 → zoo_kcl-0.3.104}/kcl-derive-docs/tests/option_input_format.gen +0 -0
- {zoo_kcl-0.3.103 → zoo_kcl-0.3.104}/kcl-derive-docs/tests/return_vec_box_sketch.gen +0 -0
- {zoo_kcl-0.3.103 → zoo_kcl-0.3.104}/kcl-derive-docs/tests/return_vec_sketch.gen +0 -0
- {zoo_kcl-0.3.103 → zoo_kcl-0.3.104}/kcl-derive-docs/tests/show.gen +0 -0
- {zoo_kcl-0.3.103 → zoo_kcl-0.3.104}/kcl-derive-docs/tests/test_args_with_exec_state.gen +0 -0
- {zoo_kcl-0.3.103 → zoo_kcl-0.3.104}/kcl-directory-test-macro/src/lib.rs +0 -0
- {zoo_kcl-0.3.103 → zoo_kcl-0.3.104}/kcl-error/src/source_range.rs +0 -0
- {zoo_kcl-0.3.103 → zoo_kcl-0.3.104}/kcl-lib/README.md +0 -0
- {zoo_kcl-0.3.103 → zoo_kcl-0.3.104}/kcl-lib/clippy.toml +0 -0
- {zoo_kcl-0.3.103 → zoo_kcl-0.3.104}/kcl-lib/common.kcl +0 -0
- {zoo_kcl-0.3.103 → zoo_kcl-0.3.104}/kcl-lib/src/coredump/local.rs +0 -0
- {zoo_kcl-0.3.103 → zoo_kcl-0.3.104}/kcl-lib/src/coredump/mod.rs +0 -0
- {zoo_kcl-0.3.103 → zoo_kcl-0.3.104}/kcl-lib/src/coredump/wasm.rs +0 -0
- {zoo_kcl-0.3.103 → zoo_kcl-0.3.104}/kcl-lib/src/docs/gen_std_tests.rs +0 -0
- {zoo_kcl-0.3.103 → zoo_kcl-0.3.104}/kcl-lib/src/docs/kcl_doc.rs +0 -0
- {zoo_kcl-0.3.103 → zoo_kcl-0.3.104}/kcl-lib/src/docs/mod.rs +0 -0
- {zoo_kcl-0.3.103 → zoo_kcl-0.3.104}/kcl-lib/src/docs/templates/const.hbs +0 -0
- {zoo_kcl-0.3.103 → zoo_kcl-0.3.104}/kcl-lib/src/docs/templates/function.hbs +0 -0
- {zoo_kcl-0.3.103 → zoo_kcl-0.3.104}/kcl-lib/src/docs/templates/index.hbs +0 -0
- {zoo_kcl-0.3.103 → zoo_kcl-0.3.104}/kcl-lib/src/docs/templates/kclType.hbs +0 -0
- {zoo_kcl-0.3.103 → zoo_kcl-0.3.104}/kcl-lib/src/docs/templates/module.hbs +0 -0
- {zoo_kcl-0.3.103 → zoo_kcl-0.3.104}/kcl-lib/src/engine/async_tasks/mod.rs +0 -0
- {zoo_kcl-0.3.103 → zoo_kcl-0.3.104}/kcl-lib/src/engine/async_tasks/tasks.rs +0 -0
- {zoo_kcl-0.3.103 → zoo_kcl-0.3.104}/kcl-lib/src/engine/async_tasks/tasks_wasm.rs +0 -0
- {zoo_kcl-0.3.103 → zoo_kcl-0.3.104}/kcl-lib/src/engine/conn.rs +0 -0
- {zoo_kcl-0.3.103 → zoo_kcl-0.3.104}/kcl-lib/src/engine/conn_mock.rs +0 -0
- {zoo_kcl-0.3.103 → zoo_kcl-0.3.104}/kcl-lib/src/engine/conn_wasm.rs +0 -0
- {zoo_kcl-0.3.103 → zoo_kcl-0.3.104}/kcl-lib/src/engine/mod.rs +0 -0
- {zoo_kcl-0.3.103 → zoo_kcl-0.3.104}/kcl-lib/src/errors.rs +0 -0
- {zoo_kcl-0.3.103 → zoo_kcl-0.3.104}/kcl-lib/src/execution/artifact/mermaid_tests.rs +0 -0
- {zoo_kcl-0.3.103 → zoo_kcl-0.3.104}/kcl-lib/src/execution/cache.rs +0 -0
- {zoo_kcl-0.3.103 → zoo_kcl-0.3.104}/kcl-lib/src/execution/cad_op.rs +0 -0
- {zoo_kcl-0.3.103 → zoo_kcl-0.3.104}/kcl-lib/src/execution/geometry.rs +0 -0
- {zoo_kcl-0.3.103 → zoo_kcl-0.3.104}/kcl-lib/src/execution/id_generator.rs +0 -0
- {zoo_kcl-0.3.103 → zoo_kcl-0.3.104}/kcl-lib/src/execution/import.rs +0 -0
- {zoo_kcl-0.3.103 → zoo_kcl-0.3.104}/kcl-lib/src/execution/import_graph.rs +0 -0
- {zoo_kcl-0.3.103 → zoo_kcl-0.3.104}/kcl-lib/src/execution/mod.rs +0 -0
- {zoo_kcl-0.3.103 → zoo_kcl-0.3.104}/kcl-lib/src/execution/modeling.rs +0 -0
- {zoo_kcl-0.3.103 → zoo_kcl-0.3.104}/kcl-lib/src/execution/typed_path.rs +0 -0
- {zoo_kcl-0.3.103 → zoo_kcl-0.3.104}/kcl-lib/src/execution/types.rs +0 -0
- {zoo_kcl-0.3.103 → zoo_kcl-0.3.104}/kcl-lib/src/fmt.rs +0 -0
- {zoo_kcl-0.3.103 → zoo_kcl-0.3.104}/kcl-lib/src/fs/local.rs +0 -0
- {zoo_kcl-0.3.103 → zoo_kcl-0.3.104}/kcl-lib/src/fs/mod.rs +0 -0
- {zoo_kcl-0.3.103 → zoo_kcl-0.3.104}/kcl-lib/src/fs/wasm.rs +0 -0
- {zoo_kcl-0.3.103 → zoo_kcl-0.3.104}/kcl-lib/src/lint/checks/camel_case.rs +0 -0
- {zoo_kcl-0.3.103 → zoo_kcl-0.3.104}/kcl-lib/src/lint/checks/default_plane.rs +0 -0
- {zoo_kcl-0.3.103 → zoo_kcl-0.3.104}/kcl-lib/src/lint/checks/mod.rs +0 -0
- {zoo_kcl-0.3.103 → zoo_kcl-0.3.104}/kcl-lib/src/lint/checks/offset_plane.rs +0 -0
- {zoo_kcl-0.3.103 → zoo_kcl-0.3.104}/kcl-lib/src/log.rs +0 -0
- {zoo_kcl-0.3.103 → zoo_kcl-0.3.104}/kcl-lib/src/lsp/backend.rs +0 -0
- {zoo_kcl-0.3.103 → zoo_kcl-0.3.104}/kcl-lib/src/lsp/copilot/cache.rs +0 -0
- {zoo_kcl-0.3.103 → zoo_kcl-0.3.104}/kcl-lib/src/lsp/copilot/mod.rs +0 -0
- {zoo_kcl-0.3.103 → zoo_kcl-0.3.104}/kcl-lib/src/lsp/copilot/types.rs +0 -0
- {zoo_kcl-0.3.103 → zoo_kcl-0.3.104}/kcl-lib/src/lsp/kcl/custom_notifications.rs +0 -0
- {zoo_kcl-0.3.103 → zoo_kcl-0.3.104}/kcl-lib/src/lsp/kcl/hover.rs +0 -0
- {zoo_kcl-0.3.103 → zoo_kcl-0.3.104}/kcl-lib/src/lsp/kcl/mod.rs +0 -0
- {zoo_kcl-0.3.103 → zoo_kcl-0.3.104}/kcl-lib/src/lsp/mod.rs +0 -0
- {zoo_kcl-0.3.103 → zoo_kcl-0.3.104}/kcl-lib/src/lsp/test_util.rs +0 -0
- {zoo_kcl-0.3.103 → zoo_kcl-0.3.104}/kcl-lib/src/lsp/tests.rs +0 -0
- {zoo_kcl-0.3.103 → zoo_kcl-0.3.104}/kcl-lib/src/lsp/util.rs +0 -0
- {zoo_kcl-0.3.103 → zoo_kcl-0.3.104}/kcl-lib/src/main.rs +0 -0
- {zoo_kcl-0.3.103 → zoo_kcl-0.3.104}/kcl-lib/src/modules.rs +0 -0
- {zoo_kcl-0.3.103 → zoo_kcl-0.3.104}/kcl-lib/src/parsing/ast/digest.rs +0 -0
- {zoo_kcl-0.3.103 → zoo_kcl-0.3.104}/kcl-lib/src/parsing/ast/mod.rs +0 -0
- {zoo_kcl-0.3.103 → zoo_kcl-0.3.104}/kcl-lib/src/parsing/ast/types/condition.rs +0 -0
- {zoo_kcl-0.3.103 → zoo_kcl-0.3.104}/kcl-lib/src/parsing/ast/types/literal_value.rs +0 -0
- {zoo_kcl-0.3.103 → zoo_kcl-0.3.104}/kcl-lib/src/parsing/ast/types/none.rs +0 -0
- {zoo_kcl-0.3.103 → zoo_kcl-0.3.104}/kcl-lib/src/parsing/ast/types/path.rs +0 -0
- {zoo_kcl-0.3.103 → zoo_kcl-0.3.104}/kcl-lib/src/parsing/math.rs +0 -0
- {zoo_kcl-0.3.103 → zoo_kcl-0.3.104}/kcl-lib/src/parsing/mod.rs +0 -0
- {zoo_kcl-0.3.103 → zoo_kcl-0.3.104}/kcl-lib/src/parsing/parser.rs +0 -0
- {zoo_kcl-0.3.103 → zoo_kcl-0.3.104}/kcl-lib/src/parsing/snapshots/kcl_lib__parsing__parser__snapshot_math_tests__a.snap +0 -0
- {zoo_kcl-0.3.103 → zoo_kcl-0.3.104}/kcl-lib/src/parsing/snapshots/kcl_lib__parsing__parser__snapshot_math_tests__b.snap +0 -0
- {zoo_kcl-0.3.103 → zoo_kcl-0.3.104}/kcl-lib/src/parsing/snapshots/kcl_lib__parsing__parser__snapshot_math_tests__c.snap +0 -0
- {zoo_kcl-0.3.103 → zoo_kcl-0.3.104}/kcl-lib/src/parsing/snapshots/kcl_lib__parsing__parser__snapshot_math_tests__d.snap +0 -0
- {zoo_kcl-0.3.103 → zoo_kcl-0.3.104}/kcl-lib/src/parsing/snapshots/kcl_lib__parsing__parser__snapshot_math_tests__e.snap +0 -0
- {zoo_kcl-0.3.103 → zoo_kcl-0.3.104}/kcl-lib/src/parsing/snapshots/kcl_lib__parsing__parser__snapshot_math_tests__f.snap +0 -0
- {zoo_kcl-0.3.103 → zoo_kcl-0.3.104}/kcl-lib/src/parsing/snapshots/kcl_lib__parsing__parser__snapshot_math_tests__g.snap +0 -0
- {zoo_kcl-0.3.103 → zoo_kcl-0.3.104}/kcl-lib/src/parsing/snapshots/kcl_lib__parsing__parser__snapshot_math_tests__h.snap +0 -0
- {zoo_kcl-0.3.103 → zoo_kcl-0.3.104}/kcl-lib/src/parsing/snapshots/kcl_lib__parsing__parser__snapshot_math_tests__i.snap +0 -0
- {zoo_kcl-0.3.103 → zoo_kcl-0.3.104}/kcl-lib/src/parsing/snapshots/kcl_lib__parsing__parser__snapshot_math_tests__j.snap +0 -0
- {zoo_kcl-0.3.103 → zoo_kcl-0.3.104}/kcl-lib/src/parsing/snapshots/kcl_lib__parsing__parser__snapshot_math_tests__k.snap +0 -0
- {zoo_kcl-0.3.103 → zoo_kcl-0.3.104}/kcl-lib/src/parsing/snapshots/kcl_lib__parsing__parser__snapshot_tests__a.snap +0 -0
- {zoo_kcl-0.3.103 → zoo_kcl-0.3.104}/kcl-lib/src/parsing/snapshots/kcl_lib__parsing__parser__snapshot_tests__aa.snap +0 -0
- {zoo_kcl-0.3.103 → zoo_kcl-0.3.104}/kcl-lib/src/parsing/snapshots/kcl_lib__parsing__parser__snapshot_tests__ab.snap +0 -0
- {zoo_kcl-0.3.103 → zoo_kcl-0.3.104}/kcl-lib/src/parsing/snapshots/kcl_lib__parsing__parser__snapshot_tests__ac.snap +0 -0
- {zoo_kcl-0.3.103 → zoo_kcl-0.3.104}/kcl-lib/src/parsing/snapshots/kcl_lib__parsing__parser__snapshot_tests__ad.snap +0 -0
- {zoo_kcl-0.3.103 → zoo_kcl-0.3.104}/kcl-lib/src/parsing/snapshots/kcl_lib__parsing__parser__snapshot_tests__ae.snap +0 -0
- {zoo_kcl-0.3.103 → zoo_kcl-0.3.104}/kcl-lib/src/parsing/snapshots/kcl_lib__parsing__parser__snapshot_tests__af.snap +0 -0
- {zoo_kcl-0.3.103 → zoo_kcl-0.3.104}/kcl-lib/src/parsing/snapshots/kcl_lib__parsing__parser__snapshot_tests__ag.snap +0 -0
- {zoo_kcl-0.3.103 → zoo_kcl-0.3.104}/kcl-lib/src/parsing/snapshots/kcl_lib__parsing__parser__snapshot_tests__ah.snap +0 -0
- {zoo_kcl-0.3.103 → zoo_kcl-0.3.104}/kcl-lib/src/parsing/snapshots/kcl_lib__parsing__parser__snapshot_tests__ai.snap +0 -0
- {zoo_kcl-0.3.103 → zoo_kcl-0.3.104}/kcl-lib/src/parsing/snapshots/kcl_lib__parsing__parser__snapshot_tests__aj.snap +0 -0
- {zoo_kcl-0.3.103 → zoo_kcl-0.3.104}/kcl-lib/src/parsing/snapshots/kcl_lib__parsing__parser__snapshot_tests__ak.snap +0 -0
- {zoo_kcl-0.3.103 → zoo_kcl-0.3.104}/kcl-lib/src/parsing/snapshots/kcl_lib__parsing__parser__snapshot_tests__ap.snap +0 -0
- {zoo_kcl-0.3.103 → zoo_kcl-0.3.104}/kcl-lib/src/parsing/snapshots/kcl_lib__parsing__parser__snapshot_tests__aq.snap +0 -0
- {zoo_kcl-0.3.103 → zoo_kcl-0.3.104}/kcl-lib/src/parsing/snapshots/kcl_lib__parsing__parser__snapshot_tests__ar.snap +0 -0
- {zoo_kcl-0.3.103 → zoo_kcl-0.3.104}/kcl-lib/src/parsing/snapshots/kcl_lib__parsing__parser__snapshot_tests__array_ranges.snap +0 -0
- {zoo_kcl-0.3.103 → zoo_kcl-0.3.104}/kcl-lib/src/parsing/snapshots/kcl_lib__parsing__parser__snapshot_tests__at.snap +0 -0
- {zoo_kcl-0.3.103 → zoo_kcl-0.3.104}/kcl-lib/src/parsing/snapshots/kcl_lib__parsing__parser__snapshot_tests__au.snap +0 -0
- {zoo_kcl-0.3.103 → zoo_kcl-0.3.104}/kcl-lib/src/parsing/snapshots/kcl_lib__parsing__parser__snapshot_tests__av.snap +0 -0
- {zoo_kcl-0.3.103 → zoo_kcl-0.3.104}/kcl-lib/src/parsing/snapshots/kcl_lib__parsing__parser__snapshot_tests__aw.snap +0 -0
- {zoo_kcl-0.3.103 → zoo_kcl-0.3.104}/kcl-lib/src/parsing/snapshots/kcl_lib__parsing__parser__snapshot_tests__ax.snap +0 -0
- {zoo_kcl-0.3.103 → zoo_kcl-0.3.104}/kcl-lib/src/parsing/snapshots/kcl_lib__parsing__parser__snapshot_tests__ay.snap +0 -0
- {zoo_kcl-0.3.103 → zoo_kcl-0.3.104}/kcl-lib/src/parsing/snapshots/kcl_lib__parsing__parser__snapshot_tests__az.snap +0 -0
- {zoo_kcl-0.3.103 → zoo_kcl-0.3.104}/kcl-lib/src/parsing/snapshots/kcl_lib__parsing__parser__snapshot_tests__b.snap +0 -0
- {zoo_kcl-0.3.103 → zoo_kcl-0.3.104}/kcl-lib/src/parsing/snapshots/kcl_lib__parsing__parser__snapshot_tests__bb.snap +0 -0
- {zoo_kcl-0.3.103 → zoo_kcl-0.3.104}/kcl-lib/src/parsing/snapshots/kcl_lib__parsing__parser__snapshot_tests__bc.snap +0 -0
- {zoo_kcl-0.3.103 → zoo_kcl-0.3.104}/kcl-lib/src/parsing/snapshots/kcl_lib__parsing__parser__snapshot_tests__bd.snap +0 -0
- {zoo_kcl-0.3.103 → zoo_kcl-0.3.104}/kcl-lib/src/parsing/snapshots/kcl_lib__parsing__parser__snapshot_tests__be.snap +0 -0
- {zoo_kcl-0.3.103 → zoo_kcl-0.3.104}/kcl-lib/src/parsing/snapshots/kcl_lib__parsing__parser__snapshot_tests__bf.snap +0 -0
- {zoo_kcl-0.3.103 → zoo_kcl-0.3.104}/kcl-lib/src/parsing/snapshots/kcl_lib__parsing__parser__snapshot_tests__bg.snap +0 -0
- {zoo_kcl-0.3.103 → zoo_kcl-0.3.104}/kcl-lib/src/parsing/snapshots/kcl_lib__parsing__parser__snapshot_tests__bh.snap +0 -0
- {zoo_kcl-0.3.103 → zoo_kcl-0.3.104}/kcl-lib/src/parsing/snapshots/kcl_lib__parsing__parser__snapshot_tests__bi.snap +0 -0
- {zoo_kcl-0.3.103 → zoo_kcl-0.3.104}/kcl-lib/src/parsing/snapshots/kcl_lib__parsing__parser__snapshot_tests__bj.snap +0 -0
- {zoo_kcl-0.3.103 → zoo_kcl-0.3.104}/kcl-lib/src/parsing/snapshots/kcl_lib__parsing__parser__snapshot_tests__bk.snap +0 -0
- {zoo_kcl-0.3.103 → zoo_kcl-0.3.104}/kcl-lib/src/parsing/snapshots/kcl_lib__parsing__parser__snapshot_tests__bl.snap +0 -0
- {zoo_kcl-0.3.103 → zoo_kcl-0.3.104}/kcl-lib/src/parsing/snapshots/kcl_lib__parsing__parser__snapshot_tests__bm.snap +0 -0
- {zoo_kcl-0.3.103 → zoo_kcl-0.3.104}/kcl-lib/src/parsing/snapshots/kcl_lib__parsing__parser__snapshot_tests__bn.snap +0 -0
- {zoo_kcl-0.3.103 → zoo_kcl-0.3.104}/kcl-lib/src/parsing/snapshots/kcl_lib__parsing__parser__snapshot_tests__c.snap +0 -0
- {zoo_kcl-0.3.103 → zoo_kcl-0.3.104}/kcl-lib/src/parsing/snapshots/kcl_lib__parsing__parser__snapshot_tests__d.snap +0 -0
- {zoo_kcl-0.3.103 → zoo_kcl-0.3.104}/kcl-lib/src/parsing/snapshots/kcl_lib__parsing__parser__snapshot_tests__d2.snap +0 -0
- {zoo_kcl-0.3.103 → zoo_kcl-0.3.104}/kcl-lib/src/parsing/snapshots/kcl_lib__parsing__parser__snapshot_tests__e.snap +0 -0
- {zoo_kcl-0.3.103 → zoo_kcl-0.3.104}/kcl-lib/src/parsing/snapshots/kcl_lib__parsing__parser__snapshot_tests__f.snap +0 -0
- {zoo_kcl-0.3.103 → zoo_kcl-0.3.104}/kcl-lib/src/parsing/snapshots/kcl_lib__parsing__parser__snapshot_tests__g.snap +0 -0
- {zoo_kcl-0.3.103 → zoo_kcl-0.3.104}/kcl-lib/src/parsing/snapshots/kcl_lib__parsing__parser__snapshot_tests__h.snap +0 -0
- {zoo_kcl-0.3.103 → zoo_kcl-0.3.104}/kcl-lib/src/parsing/snapshots/kcl_lib__parsing__parser__snapshot_tests__i.snap +0 -0
- {zoo_kcl-0.3.103 → zoo_kcl-0.3.104}/kcl-lib/src/parsing/snapshots/kcl_lib__parsing__parser__snapshot_tests__j.snap +0 -0
- {zoo_kcl-0.3.103 → zoo_kcl-0.3.104}/kcl-lib/src/parsing/snapshots/kcl_lib__parsing__parser__snapshot_tests__k.snap +0 -0
- {zoo_kcl-0.3.103 → zoo_kcl-0.3.104}/kcl-lib/src/parsing/snapshots/kcl_lib__parsing__parser__snapshot_tests__kw_function_all_named.snap +0 -0
- {zoo_kcl-0.3.103 → zoo_kcl-0.3.104}/kcl-lib/src/parsing/snapshots/kcl_lib__parsing__parser__snapshot_tests__kw_function_call_in_pipe.snap +0 -0
- {zoo_kcl-0.3.103 → zoo_kcl-0.3.104}/kcl-lib/src/parsing/snapshots/kcl_lib__parsing__parser__snapshot_tests__kw_function_call_multiline.snap +0 -0
- {zoo_kcl-0.3.103 → zoo_kcl-0.3.104}/kcl-lib/src/parsing/snapshots/kcl_lib__parsing__parser__snapshot_tests__kw_function_call_multiline_with_comments.snap +0 -0
- {zoo_kcl-0.3.103 → zoo_kcl-0.3.104}/kcl-lib/src/parsing/snapshots/kcl_lib__parsing__parser__snapshot_tests__kw_function_decl_all_labeled.snap +0 -0
- {zoo_kcl-0.3.103 → zoo_kcl-0.3.104}/kcl-lib/src/parsing/snapshots/kcl_lib__parsing__parser__snapshot_tests__kw_function_decl_first_unlabeled.snap +0 -0
- {zoo_kcl-0.3.103 → zoo_kcl-0.3.104}/kcl-lib/src/parsing/snapshots/kcl_lib__parsing__parser__snapshot_tests__kw_function_decl_with_default_and_type.snap +0 -0
- {zoo_kcl-0.3.103 → zoo_kcl-0.3.104}/kcl-lib/src/parsing/snapshots/kcl_lib__parsing__parser__snapshot_tests__kw_function_decl_with_default_no_type.snap +0 -0
- {zoo_kcl-0.3.103 → zoo_kcl-0.3.104}/kcl-lib/src/parsing/snapshots/kcl_lib__parsing__parser__snapshot_tests__kw_function_in_binary_op.snap +0 -0
- {zoo_kcl-0.3.103 → zoo_kcl-0.3.104}/kcl-lib/src/parsing/snapshots/kcl_lib__parsing__parser__snapshot_tests__kw_function_unnamed_first.snap +0 -0
- {zoo_kcl-0.3.103 → zoo_kcl-0.3.104}/kcl-lib/src/parsing/snapshots/kcl_lib__parsing__parser__snapshot_tests__l.snap +0 -0
- {zoo_kcl-0.3.103 → zoo_kcl-0.3.104}/kcl-lib/src/parsing/snapshots/kcl_lib__parsing__parser__snapshot_tests__m.snap +0 -0
- {zoo_kcl-0.3.103 → zoo_kcl-0.3.104}/kcl-lib/src/parsing/snapshots/kcl_lib__parsing__parser__snapshot_tests__n.snap +0 -0
- {zoo_kcl-0.3.103 → zoo_kcl-0.3.104}/kcl-lib/src/parsing/snapshots/kcl_lib__parsing__parser__snapshot_tests__o.snap +0 -0
- {zoo_kcl-0.3.103 → zoo_kcl-0.3.104}/kcl-lib/src/parsing/snapshots/kcl_lib__parsing__parser__snapshot_tests__p.snap +0 -0
- {zoo_kcl-0.3.103 → zoo_kcl-0.3.104}/kcl-lib/src/parsing/snapshots/kcl_lib__parsing__parser__snapshot_tests__q.snap +0 -0
- {zoo_kcl-0.3.103 → zoo_kcl-0.3.104}/kcl-lib/src/parsing/snapshots/kcl_lib__parsing__parser__snapshot_tests__r.snap +0 -0
- {zoo_kcl-0.3.103 → zoo_kcl-0.3.104}/kcl-lib/src/parsing/snapshots/kcl_lib__parsing__parser__snapshot_tests__s.snap +0 -0
- {zoo_kcl-0.3.103 → zoo_kcl-0.3.104}/kcl-lib/src/parsing/snapshots/kcl_lib__parsing__parser__snapshot_tests__space_between_expr_and_array.snap +0 -0
- {zoo_kcl-0.3.103 → zoo_kcl-0.3.104}/kcl-lib/src/parsing/snapshots/kcl_lib__parsing__parser__snapshot_tests__space_between_unary_and_operand.snap +0 -0
- {zoo_kcl-0.3.103 → zoo_kcl-0.3.104}/kcl-lib/src/parsing/snapshots/kcl_lib__parsing__parser__snapshot_tests__t.snap +0 -0
- {zoo_kcl-0.3.103 → zoo_kcl-0.3.104}/kcl-lib/src/parsing/snapshots/kcl_lib__parsing__parser__snapshot_tests__u.snap +0 -0
- {zoo_kcl-0.3.103 → zoo_kcl-0.3.104}/kcl-lib/src/parsing/snapshots/kcl_lib__parsing__parser__snapshot_tests__v.snap +0 -0
- {zoo_kcl-0.3.103 → zoo_kcl-0.3.104}/kcl-lib/src/parsing/snapshots/kcl_lib__parsing__parser__snapshot_tests__w.snap +0 -0
- {zoo_kcl-0.3.103 → zoo_kcl-0.3.104}/kcl-lib/src/parsing/snapshots/kcl_lib__parsing__parser__snapshot_tests__x.snap +0 -0
- {zoo_kcl-0.3.103 → zoo_kcl-0.3.104}/kcl-lib/src/parsing/snapshots/kcl_lib__parsing__parser__snapshot_tests__y.snap +0 -0
- {zoo_kcl-0.3.103 → zoo_kcl-0.3.104}/kcl-lib/src/parsing/snapshots/kcl_lib__parsing__parser__snapshot_tests__z.snap +0 -0
- {zoo_kcl-0.3.103 → zoo_kcl-0.3.104}/kcl-lib/src/parsing/token/mod.rs +0 -0
- {zoo_kcl-0.3.103 → zoo_kcl-0.3.104}/kcl-lib/src/parsing/token/snapshots/kcl_lib__parsing__token__tokeniser__tests__program2.snap +0 -0
- {zoo_kcl-0.3.103 → zoo_kcl-0.3.104}/kcl-lib/src/parsing/token/tokeniser.rs +0 -0
- {zoo_kcl-0.3.103 → zoo_kcl-0.3.104}/kcl-lib/src/project/mod.rs +0 -0
- {zoo_kcl-0.3.103 → zoo_kcl-0.3.104}/kcl-lib/src/settings/generate_settings_docs.rs +0 -0
- {zoo_kcl-0.3.103 → zoo_kcl-0.3.104}/kcl-lib/src/settings/mod.rs +0 -0
- {zoo_kcl-0.3.103 → zoo_kcl-0.3.104}/kcl-lib/src/settings/templates/settings.hbs +0 -0
- {zoo_kcl-0.3.103 → zoo_kcl-0.3.104}/kcl-lib/src/settings/types/mod.rs +0 -0
- {zoo_kcl-0.3.103 → zoo_kcl-0.3.104}/kcl-lib/src/settings/types/project.rs +0 -0
- {zoo_kcl-0.3.103 → zoo_kcl-0.3.104}/kcl-lib/src/simulation_tests/kcl_samples.rs +0 -0
- {zoo_kcl-0.3.103 → zoo_kcl-0.3.104}/kcl-lib/src/std/appearance.rs +0 -0
- {zoo_kcl-0.3.103 → zoo_kcl-0.3.104}/kcl-lib/src/std/args.rs +0 -0
- {zoo_kcl-0.3.103 → zoo_kcl-0.3.104}/kcl-lib/src/std/array.rs +0 -0
- {zoo_kcl-0.3.103 → zoo_kcl-0.3.104}/kcl-lib/src/std/assert.rs +0 -0
- {zoo_kcl-0.3.103 → zoo_kcl-0.3.104}/kcl-lib/src/std/axis_or_reference.rs +0 -0
- {zoo_kcl-0.3.103 → zoo_kcl-0.3.104}/kcl-lib/src/std/clone.rs +0 -0
- {zoo_kcl-0.3.103 → zoo_kcl-0.3.104}/kcl-lib/src/std/constraints.rs +0 -0
- {zoo_kcl-0.3.103 → zoo_kcl-0.3.104}/kcl-lib/src/std/csg.rs +0 -0
- {zoo_kcl-0.3.103 → zoo_kcl-0.3.104}/kcl-lib/src/std/edge.rs +0 -0
- {zoo_kcl-0.3.103 → zoo_kcl-0.3.104}/kcl-lib/src/std/extrude.rs +0 -0
- {zoo_kcl-0.3.103 → zoo_kcl-0.3.104}/kcl-lib/src/std/fillet.rs +0 -0
- {zoo_kcl-0.3.103 → zoo_kcl-0.3.104}/kcl-lib/src/std/helix.rs +0 -0
- {zoo_kcl-0.3.103 → zoo_kcl-0.3.104}/kcl-lib/src/std/loft.rs +0 -0
- {zoo_kcl-0.3.103 → zoo_kcl-0.3.104}/kcl-lib/src/std/math.rs +0 -0
- {zoo_kcl-0.3.103 → zoo_kcl-0.3.104}/kcl-lib/src/std/mirror.rs +0 -0
- {zoo_kcl-0.3.103 → zoo_kcl-0.3.104}/kcl-lib/src/std/patterns.rs +0 -0
- {zoo_kcl-0.3.103 → zoo_kcl-0.3.104}/kcl-lib/src/std/planes.rs +0 -0
- {zoo_kcl-0.3.103 → zoo_kcl-0.3.104}/kcl-lib/src/std/revolve.rs +0 -0
- {zoo_kcl-0.3.103 → zoo_kcl-0.3.104}/kcl-lib/src/std/segment.rs +0 -0
- {zoo_kcl-0.3.103 → zoo_kcl-0.3.104}/kcl-lib/src/std/shapes.rs +0 -0
- {zoo_kcl-0.3.103 → zoo_kcl-0.3.104}/kcl-lib/src/std/shell.rs +0 -0
- {zoo_kcl-0.3.103 → zoo_kcl-0.3.104}/kcl-lib/src/std/sketch.rs +0 -0
- {zoo_kcl-0.3.103 → zoo_kcl-0.3.104}/kcl-lib/src/std/sweep.rs +0 -0
- {zoo_kcl-0.3.103 → zoo_kcl-0.3.104}/kcl-lib/src/std/transform.rs +0 -0
- {zoo_kcl-0.3.103 → zoo_kcl-0.3.104}/kcl-lib/src/std/utils.rs +0 -0
- {zoo_kcl-0.3.103 → zoo_kcl-0.3.104}/kcl-lib/src/test_server.rs +0 -0
- {zoo_kcl-0.3.103 → zoo_kcl-0.3.104}/kcl-lib/src/thread/local.rs +0 -0
- {zoo_kcl-0.3.103 → zoo_kcl-0.3.104}/kcl-lib/src/thread/mod.rs +0 -0
- {zoo_kcl-0.3.103 → zoo_kcl-0.3.104}/kcl-lib/src/thread/wasm.rs +0 -0
- {zoo_kcl-0.3.103 → zoo_kcl-0.3.104}/kcl-lib/src/unparser.rs +0 -0
- {zoo_kcl-0.3.103 → zoo_kcl-0.3.104}/kcl-lib/src/variant_name.rs +0 -0
- {zoo_kcl-0.3.103 → zoo_kcl-0.3.104}/kcl-lib/src/walk/ast_node.rs +0 -0
- {zoo_kcl-0.3.103 → zoo_kcl-0.3.104}/kcl-lib/src/walk/ast_visitor.rs +0 -0
- {zoo_kcl-0.3.103 → zoo_kcl-0.3.104}/kcl-lib/src/walk/ast_walk.rs +0 -0
- {zoo_kcl-0.3.103 → zoo_kcl-0.3.104}/kcl-lib/src/walk/mod.rs +0 -0
- {zoo_kcl-0.3.103 → zoo_kcl-0.3.104}/kcl-lib/src/wasm/mod.rs +0 -0
- {zoo_kcl-0.3.103 → zoo_kcl-0.3.104}/kcl-lib/std/sweep.kcl +0 -0
- {zoo_kcl-0.3.103 → zoo_kcl-0.3.104}/kcl-lib/std/turns.kcl +0 -0
- {zoo_kcl-0.3.103 → zoo_kcl-0.3.104}/kcl-lib/std/types.kcl +0 -0
- {zoo_kcl-0.3.103 → zoo_kcl-0.3.104}/kcl-python-bindings/README.md +0 -0
- {zoo_kcl-0.3.103 → zoo_kcl-0.3.104}/kcl-python-bindings/justfile +0 -0
- {zoo_kcl-0.3.103 → zoo_kcl-0.3.104}/kcl-python-bindings/src/bin/stub_gen.rs +0 -0
- {zoo_kcl-0.3.103 → zoo_kcl-0.3.104}/kcl-python-bindings/src/bridge.rs +0 -0
- {zoo_kcl-0.3.103 → zoo_kcl-0.3.104}/pyproject.toml +0 -0
|
@@ -2231,7 +2231,7 @@ dependencies = [
|
|
|
2231
2231
|
|
|
2232
2232
|
[[package]]
|
|
2233
2233
|
name = "kcl-api"
|
|
2234
|
-
version = "0.1.
|
|
2234
|
+
version = "0.1.104"
|
|
2235
2235
|
dependencies = [
|
|
2236
2236
|
"indexmap 2.11.4",
|
|
2237
2237
|
"kcl-error",
|
|
@@ -2242,7 +2242,7 @@ dependencies = [
|
|
|
2242
2242
|
|
|
2243
2243
|
[[package]]
|
|
2244
2244
|
name = "kcl-bumper"
|
|
2245
|
-
version = "0.1.
|
|
2245
|
+
version = "0.1.104"
|
|
2246
2246
|
dependencies = [
|
|
2247
2247
|
"anyhow",
|
|
2248
2248
|
"clap",
|
|
@@ -2253,7 +2253,7 @@ dependencies = [
|
|
|
2253
2253
|
|
|
2254
2254
|
[[package]]
|
|
2255
2255
|
name = "kcl-derive-docs"
|
|
2256
|
-
version = "0.1.
|
|
2256
|
+
version = "0.1.104"
|
|
2257
2257
|
dependencies = [
|
|
2258
2258
|
"proc-macro2",
|
|
2259
2259
|
"quote",
|
|
@@ -2262,7 +2262,7 @@ dependencies = [
|
|
|
2262
2262
|
|
|
2263
2263
|
[[package]]
|
|
2264
2264
|
name = "kcl-directory-test-macro"
|
|
2265
|
-
version = "0.1.
|
|
2265
|
+
version = "0.1.104"
|
|
2266
2266
|
dependencies = [
|
|
2267
2267
|
"convert_case",
|
|
2268
2268
|
"proc-macro2",
|
|
@@ -2272,7 +2272,7 @@ dependencies = [
|
|
|
2272
2272
|
|
|
2273
2273
|
[[package]]
|
|
2274
2274
|
name = "kcl-error"
|
|
2275
|
-
version = "0.1.
|
|
2275
|
+
version = "0.1.104"
|
|
2276
2276
|
dependencies = [
|
|
2277
2277
|
"miette",
|
|
2278
2278
|
"serde",
|
|
@@ -2297,7 +2297,7 @@ dependencies = [
|
|
|
2297
2297
|
|
|
2298
2298
|
[[package]]
|
|
2299
2299
|
name = "kcl-language-server"
|
|
2300
|
-
version = "0.2.
|
|
2300
|
+
version = "0.2.104"
|
|
2301
2301
|
dependencies = [
|
|
2302
2302
|
"anyhow",
|
|
2303
2303
|
"clap",
|
|
@@ -2318,7 +2318,7 @@ dependencies = [
|
|
|
2318
2318
|
|
|
2319
2319
|
[[package]]
|
|
2320
2320
|
name = "kcl-language-server-release"
|
|
2321
|
-
version = "0.1.
|
|
2321
|
+
version = "0.1.104"
|
|
2322
2322
|
dependencies = [
|
|
2323
2323
|
"anyhow",
|
|
2324
2324
|
"clap",
|
|
@@ -2338,7 +2338,7 @@ dependencies = [
|
|
|
2338
2338
|
|
|
2339
2339
|
[[package]]
|
|
2340
2340
|
name = "kcl-lib"
|
|
2341
|
-
version = "0.2.
|
|
2341
|
+
version = "0.2.104"
|
|
2342
2342
|
dependencies = [
|
|
2343
2343
|
"anyhow",
|
|
2344
2344
|
"approx 0.5.1",
|
|
@@ -2420,7 +2420,7 @@ dependencies = [
|
|
|
2420
2420
|
|
|
2421
2421
|
[[package]]
|
|
2422
2422
|
name = "kcl-python-bindings"
|
|
2423
|
-
version = "0.3.
|
|
2423
|
+
version = "0.3.104"
|
|
2424
2424
|
dependencies = [
|
|
2425
2425
|
"anyhow",
|
|
2426
2426
|
"kcl-lib",
|
|
@@ -2436,7 +2436,7 @@ dependencies = [
|
|
|
2436
2436
|
|
|
2437
2437
|
[[package]]
|
|
2438
2438
|
name = "kcl-test-server"
|
|
2439
|
-
version = "0.1.
|
|
2439
|
+
version = "0.1.104"
|
|
2440
2440
|
dependencies = [
|
|
2441
2441
|
"anyhow",
|
|
2442
2442
|
"hyper 0.14.32",
|
|
@@ -2449,7 +2449,7 @@ dependencies = [
|
|
|
2449
2449
|
|
|
2450
2450
|
[[package]]
|
|
2451
2451
|
name = "kcl-to-core"
|
|
2452
|
-
version = "0.1.
|
|
2452
|
+
version = "0.1.104"
|
|
2453
2453
|
dependencies = [
|
|
2454
2454
|
"anyhow",
|
|
2455
2455
|
"async-trait",
|
|
@@ -2463,7 +2463,7 @@ dependencies = [
|
|
|
2463
2463
|
|
|
2464
2464
|
[[package]]
|
|
2465
2465
|
name = "kcl-wasm-lib"
|
|
2466
|
-
version = "0.1.
|
|
2466
|
+
version = "0.1.104"
|
|
2467
2467
|
dependencies = [
|
|
2468
2468
|
"anyhow",
|
|
2469
2469
|
"bson",
|
|
@@ -2532,9 +2532,9 @@ dependencies = [
|
|
|
2532
2532
|
|
|
2533
2533
|
[[package]]
|
|
2534
2534
|
name = "kittycad-modeling-cmds"
|
|
2535
|
-
version = "0.2.
|
|
2535
|
+
version = "0.2.145"
|
|
2536
2536
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
2537
|
-
checksum = "
|
|
2537
|
+
checksum = "dfc08235cb273fb7b317f8f072dadfe523d809e4fca4dfcfee80490ef5965d74"
|
|
2538
2538
|
dependencies = [
|
|
2539
2539
|
"anyhow",
|
|
2540
2540
|
"chrono",
|
|
@@ -16,7 +16,7 @@ kittycad = { version = "0.4.2", default-features = false, features = [
|
|
|
16
16
|
"js",
|
|
17
17
|
"requests",
|
|
18
18
|
] }
|
|
19
|
-
kittycad-modeling-cmds = { version = "0.2.
|
|
19
|
+
kittycad-modeling-cmds = { version = "0.2.145", features = [
|
|
20
20
|
"ts-rs",
|
|
21
21
|
"websocket",
|
|
22
22
|
] }
|
|
@@ -70,6 +70,7 @@ insta = { opt-level = 3 }
|
|
|
70
70
|
debug = "line-tables-only"
|
|
71
71
|
|
|
72
72
|
#Example: how to point modeling-app at a different repo (e.g. a branch or a local clone)
|
|
73
|
-
#[patch.crates-io]
|
|
74
|
-
#kittycad-modeling-cmds = {
|
|
75
|
-
#kittycad-modeling-session = {
|
|
73
|
+
# [patch.crates-io]
|
|
74
|
+
# kittycad-modeling-cmds = { git = "https://github.com/KittyCAD/modeling-api.git", branch = "ben/chamfer_angle" }
|
|
75
|
+
# kittycad-modeling-session = { git = "https://github.com/KittyCAD/modeling-api.git", branch = "ben/chamfer_angle" }
|
|
76
|
+
# #kittycad-modeling-session = { path = "../../modeling-api/modeling-session" }
|
|
@@ -100,3 +100,15 @@ pub struct Suggestion {
|
|
|
100
100
|
pub insert: String,
|
|
101
101
|
pub source_range: SourceRange,
|
|
102
102
|
}
|
|
103
|
+
|
|
104
|
+
impl Suggestion {
|
|
105
|
+
/// Apply the suggestion to the source code.
|
|
106
|
+
pub fn apply(&self, src: &str) -> String {
|
|
107
|
+
format!(
|
|
108
|
+
"{}{}{}",
|
|
109
|
+
&src[0..self.source_range.start()],
|
|
110
|
+
self.insert,
|
|
111
|
+
&src[self.source_range.end()..]
|
|
112
|
+
)
|
|
113
|
+
}
|
|
114
|
+
}
|
|
@@ -23,6 +23,7 @@ pub(crate) const SETTINGS_EXPERIMENTAL_FEATURES: &str = "experimentalFeatures";
|
|
|
23
23
|
pub(super) const NO_PRELUDE: &str = "no_std";
|
|
24
24
|
pub(crate) const DEPRECATED: &str = "deprecated";
|
|
25
25
|
pub(crate) const EXPERIMENTAL: &str = "experimental";
|
|
26
|
+
pub(crate) const INCLUDE_IN_FEATURE_TREE: &str = "feature_tree";
|
|
26
27
|
|
|
27
28
|
pub(super) const IMPORT_FORMAT: &str = "format";
|
|
28
29
|
pub(super) const IMPORT_COORDS: &str = "coords";
|
|
@@ -63,6 +64,8 @@ pub(super) const WARN_VALUES: [&str; 8] = [
|
|
|
63
64
|
];
|
|
64
65
|
|
|
65
66
|
#[derive(Clone, Copy, Eq, PartialEq, Debug, Deserialize, Serialize, ts_rs::TS)]
|
|
67
|
+
#[ts(export)]
|
|
68
|
+
#[serde(tag = "type")]
|
|
66
69
|
pub enum WarningLevel {
|
|
67
70
|
Allow,
|
|
68
71
|
Warn,
|
|
@@ -77,6 +80,14 @@ impl WarningLevel {
|
|
|
77
80
|
WarningLevel::Deny => Some(Severity::Error),
|
|
78
81
|
}
|
|
79
82
|
}
|
|
83
|
+
|
|
84
|
+
pub(crate) fn as_str(self) -> &'static str {
|
|
85
|
+
match self {
|
|
86
|
+
WarningLevel::Allow => WARN_ALLOW,
|
|
87
|
+
WarningLevel::Warn => WARN_WARN,
|
|
88
|
+
WarningLevel::Deny => WARN_DENY,
|
|
89
|
+
}
|
|
90
|
+
}
|
|
80
91
|
}
|
|
81
92
|
|
|
82
93
|
impl FromStr for WarningLevel {
|
|
@@ -226,11 +237,23 @@ pub(super) fn expect_number(expr: &Expr) -> Result<String, KclError> {
|
|
|
226
237
|
)))
|
|
227
238
|
}
|
|
228
239
|
|
|
229
|
-
#[derive(Debug, Clone, Copy, Eq, PartialEq
|
|
240
|
+
#[derive(Debug, Clone, Copy, Eq, PartialEq)]
|
|
230
241
|
pub struct FnAttrs {
|
|
231
242
|
pub impl_: Impl,
|
|
232
243
|
pub deprecated: bool,
|
|
233
244
|
pub experimental: bool,
|
|
245
|
+
pub include_in_feature_tree: bool,
|
|
246
|
+
}
|
|
247
|
+
|
|
248
|
+
impl Default for FnAttrs {
|
|
249
|
+
fn default() -> Self {
|
|
250
|
+
Self {
|
|
251
|
+
impl_: Impl::default(),
|
|
252
|
+
deprecated: false,
|
|
253
|
+
experimental: false,
|
|
254
|
+
include_in_feature_tree: true,
|
|
255
|
+
}
|
|
256
|
+
}
|
|
234
257
|
}
|
|
235
258
|
|
|
236
259
|
pub(super) fn get_fn_attrs(
|
|
@@ -283,9 +306,19 @@ pub(super) fn get_fn_attrs(
|
|
|
283
306
|
continue;
|
|
284
307
|
}
|
|
285
308
|
|
|
309
|
+
if &*p.key.name == INCLUDE_IN_FEATURE_TREE
|
|
310
|
+
&& let Some(b) = p.value.literal_bool()
|
|
311
|
+
{
|
|
312
|
+
if result.is_none() {
|
|
313
|
+
result = Some(FnAttrs::default());
|
|
314
|
+
}
|
|
315
|
+
result.as_mut().unwrap().include_in_feature_tree = b;
|
|
316
|
+
continue;
|
|
317
|
+
}
|
|
318
|
+
|
|
286
319
|
return Err(KclError::new_semantic(KclErrorDetails::new(
|
|
287
320
|
format!(
|
|
288
|
-
"Invalid attribute, expected one of: {IMPL}, {DEPRECATED}, {EXPERIMENTAL}, found `{}`",
|
|
321
|
+
"Invalid attribute, expected one of: {IMPL}, {DEPRECATED}, {EXPERIMENTAL}, {INCLUDE_IN_FEATURE_TREE}, found `{}`",
|
|
289
322
|
&*p.key.name,
|
|
290
323
|
),
|
|
291
324
|
vec![source_range],
|
|
@@ -294,6 +294,7 @@ pub struct EdgeCut {
|
|
|
294
294
|
pub enum EdgeCutSubType {
|
|
295
295
|
Fillet,
|
|
296
296
|
Chamfer,
|
|
297
|
+
Custom,
|
|
297
298
|
}
|
|
298
299
|
|
|
299
300
|
impl From<kcmc::shared::CutType> for EdgeCutSubType {
|
|
@@ -305,6 +306,16 @@ impl From<kcmc::shared::CutType> for EdgeCutSubType {
|
|
|
305
306
|
}
|
|
306
307
|
}
|
|
307
308
|
|
|
309
|
+
impl From<kcmc::shared::CutTypeV2> for EdgeCutSubType {
|
|
310
|
+
fn from(cut_type: kcmc::shared::CutTypeV2) -> Self {
|
|
311
|
+
match cut_type {
|
|
312
|
+
kcmc::shared::CutTypeV2::Fillet { .. } => EdgeCutSubType::Fillet,
|
|
313
|
+
kcmc::shared::CutTypeV2::Chamfer { .. } => EdgeCutSubType::Chamfer,
|
|
314
|
+
kcmc::shared::CutTypeV2::Custom { .. } => EdgeCutSubType::Custom,
|
|
315
|
+
}
|
|
316
|
+
}
|
|
317
|
+
}
|
|
318
|
+
|
|
308
319
|
#[derive(Debug, Clone, Serialize, PartialEq, ts_rs::TS)]
|
|
309
320
|
#[ts(export_to = "Artifact.ts")]
|
|
310
321
|
#[serde(rename_all = "camelCase")]
|
|
@@ -1301,6 +1312,31 @@ fn artifacts_to_update(
|
|
|
1301
1312
|
}
|
|
1302
1313
|
return Ok(return_arr);
|
|
1303
1314
|
}
|
|
1315
|
+
ModelingCmd::Solid3dCutEdges(cmd) => {
|
|
1316
|
+
let mut return_arr = Vec::new();
|
|
1317
|
+
let edge_id = if let Some(edge_id) = cmd.edge_ids.first() {
|
|
1318
|
+
edge_id.into()
|
|
1319
|
+
} else {
|
|
1320
|
+
internal_error!(range, "Solid3dCutEdges command has no edge ID: id={id:?}, cmd={cmd:?}");
|
|
1321
|
+
};
|
|
1322
|
+
return_arr.push(Artifact::EdgeCut(EdgeCut {
|
|
1323
|
+
id,
|
|
1324
|
+
sub_type: cmd.cut_type.into(),
|
|
1325
|
+
consumed_edge_id: edge_id,
|
|
1326
|
+
edge_ids: Vec::new(),
|
|
1327
|
+
surface_id: None,
|
|
1328
|
+
code_ref,
|
|
1329
|
+
}));
|
|
1330
|
+
let consumed_edge = artifacts.get(&edge_id);
|
|
1331
|
+
if let Some(Artifact::Segment(consumed_edge)) = consumed_edge {
|
|
1332
|
+
let mut new_segment = consumed_edge.clone();
|
|
1333
|
+
new_segment.edge_cut_id = Some(id);
|
|
1334
|
+
return_arr.push(Artifact::Segment(new_segment));
|
|
1335
|
+
} else {
|
|
1336
|
+
// TODO: Handle other types like SweepEdge.
|
|
1337
|
+
}
|
|
1338
|
+
return Ok(return_arr);
|
|
1339
|
+
}
|
|
1304
1340
|
ModelingCmd::EntityMakeHelixFromParams(_) => {
|
|
1305
1341
|
let return_arr = vec![Artifact::Helix(Helix {
|
|
1306
1342
|
id,
|
|
@@ -14,7 +14,7 @@ use crate::{
|
|
|
14
14
|
Operation, PlaneType, StatementKind, TagIdentifier, annotations,
|
|
15
15
|
cad_op::OpKclValue,
|
|
16
16
|
fn_call::Args,
|
|
17
|
-
kcl_value::{FunctionSource, TypeDef},
|
|
17
|
+
kcl_value::{FunctionSource, KclFunctionSourceParams, TypeDef},
|
|
18
18
|
memory,
|
|
19
19
|
state::{ModuleState, SketchBlockState},
|
|
20
20
|
types::{NumericType, PrimitiveType, RuntimeType},
|
|
@@ -396,7 +396,12 @@ impl ExecutorContext {
|
|
|
396
396
|
.mut_stack()
|
|
397
397
|
.add(var_name.clone(), rhs.clone(), source_range)?;
|
|
398
398
|
|
|
399
|
-
|
|
399
|
+
// Track operations, for the feature tree.
|
|
400
|
+
// Don't track these operations if the KCL code being executed is in the stdlib,
|
|
401
|
+
// because users shouldn't know about stdlib internals -- it's useless noise, to them.
|
|
402
|
+
let should_show_in_feature_tree =
|
|
403
|
+
!exec_state.mod_local.inside_stdlib && rhs.show_variable_in_feature_tree();
|
|
404
|
+
if should_show_in_feature_tree {
|
|
400
405
|
exec_state.push_op(Operation::VariableDeclaration {
|
|
401
406
|
name: var_name.clone(),
|
|
402
407
|
value: OpKclValue::from(&rhs),
|
|
@@ -766,6 +771,10 @@ impl ExecutorContext {
|
|
|
766
771
|
Expr::FunctionExpression(function_expression) => {
|
|
767
772
|
let attrs = annotations::get_fn_attrs(annotations, metadata.source_range)?;
|
|
768
773
|
let experimental = attrs.map(|a| a.experimental).unwrap_or_default();
|
|
774
|
+
let is_std = matches!(&exec_state.mod_local.path, ModulePath::Std { .. });
|
|
775
|
+
|
|
776
|
+
// Check the KCL @(feature_tree = ) annotation.
|
|
777
|
+
let include_in_feature_tree = attrs.unwrap_or_default().include_in_feature_tree;
|
|
769
778
|
if let Some(attrs) = attrs
|
|
770
779
|
&& (attrs.impl_ == annotations::Impl::Rust || attrs.impl_ == annotations::Impl::RustConstraint)
|
|
771
780
|
{
|
|
@@ -789,8 +798,11 @@ impl ExecutorContext {
|
|
|
789
798
|
value: Box::new(FunctionSource::kcl(
|
|
790
799
|
function_expression.clone(),
|
|
791
800
|
exec_state.mut_stack().snapshot(),
|
|
792
|
-
|
|
793
|
-
|
|
801
|
+
KclFunctionSourceParams {
|
|
802
|
+
is_std,
|
|
803
|
+
experimental,
|
|
804
|
+
include_in_feature_tree,
|
|
805
|
+
},
|
|
794
806
|
)),
|
|
795
807
|
meta: vec![metadata.to_owned()],
|
|
796
808
|
}
|
|
@@ -1461,16 +1473,86 @@ impl Node<MemberExpression> {
|
|
|
1461
1473
|
}
|
|
1462
1474
|
|
|
1463
1475
|
impl Node<BinaryExpression> {
|
|
1464
|
-
#[async_recursion]
|
|
1465
1476
|
pub async fn get_result(&self, exec_state: &mut ExecState, ctx: &ExecutorContext) -> Result<KclValue, KclError> {
|
|
1466
|
-
|
|
1467
|
-
|
|
1477
|
+
enum State {
|
|
1478
|
+
EvaluateLeft(Node<BinaryExpression>),
|
|
1479
|
+
FromLeft {
|
|
1480
|
+
node: Node<BinaryExpression>,
|
|
1481
|
+
},
|
|
1482
|
+
EvaluateRight {
|
|
1483
|
+
node: Node<BinaryExpression>,
|
|
1484
|
+
left: KclValue,
|
|
1485
|
+
},
|
|
1486
|
+
FromRight {
|
|
1487
|
+
node: Node<BinaryExpression>,
|
|
1488
|
+
left: KclValue,
|
|
1489
|
+
},
|
|
1490
|
+
}
|
|
1491
|
+
|
|
1492
|
+
let mut stack = vec![State::EvaluateLeft(self.clone())];
|
|
1493
|
+
let mut last_result: Option<KclValue> = None;
|
|
1494
|
+
|
|
1495
|
+
while let Some(state) = stack.pop() {
|
|
1496
|
+
match state {
|
|
1497
|
+
State::EvaluateLeft(node) => {
|
|
1498
|
+
let left_part = node.left.clone();
|
|
1499
|
+
match left_part {
|
|
1500
|
+
BinaryPart::BinaryExpression(child) => {
|
|
1501
|
+
stack.push(State::FromLeft { node });
|
|
1502
|
+
stack.push(State::EvaluateLeft(*child));
|
|
1503
|
+
}
|
|
1504
|
+
part => {
|
|
1505
|
+
let left_value = part.get_result(exec_state, ctx).await?;
|
|
1506
|
+
stack.push(State::EvaluateRight { node, left: left_value });
|
|
1507
|
+
}
|
|
1508
|
+
}
|
|
1509
|
+
}
|
|
1510
|
+
State::FromLeft { node } => {
|
|
1511
|
+
let Some(left_value) = last_result.take() else {
|
|
1512
|
+
return Err(Self::missing_result_error(&node));
|
|
1513
|
+
};
|
|
1514
|
+
stack.push(State::EvaluateRight { node, left: left_value });
|
|
1515
|
+
}
|
|
1516
|
+
State::EvaluateRight { node, left } => {
|
|
1517
|
+
let right_part = node.right.clone();
|
|
1518
|
+
match right_part {
|
|
1519
|
+
BinaryPart::BinaryExpression(child) => {
|
|
1520
|
+
stack.push(State::FromRight { node, left });
|
|
1521
|
+
stack.push(State::EvaluateLeft(*child));
|
|
1522
|
+
}
|
|
1523
|
+
part => {
|
|
1524
|
+
let right_value = part.get_result(exec_state, ctx).await?;
|
|
1525
|
+
let result = node.apply_operator(exec_state, ctx, left, right_value).await?;
|
|
1526
|
+
last_result = Some(result);
|
|
1527
|
+
}
|
|
1528
|
+
}
|
|
1529
|
+
}
|
|
1530
|
+
State::FromRight { node, left } => {
|
|
1531
|
+
let Some(right_value) = last_result.take() else {
|
|
1532
|
+
return Err(Self::missing_result_error(&node));
|
|
1533
|
+
};
|
|
1534
|
+
let result = node.apply_operator(exec_state, ctx, left, right_value).await?;
|
|
1535
|
+
last_result = Some(result);
|
|
1536
|
+
}
|
|
1537
|
+
}
|
|
1538
|
+
}
|
|
1539
|
+
|
|
1540
|
+
last_result.ok_or_else(|| Self::missing_result_error(self))
|
|
1541
|
+
}
|
|
1542
|
+
|
|
1543
|
+
async fn apply_operator(
|
|
1544
|
+
&self,
|
|
1545
|
+
exec_state: &mut ExecState,
|
|
1546
|
+
ctx: &ExecutorContext,
|
|
1547
|
+
left_value: KclValue,
|
|
1548
|
+
right_value: KclValue,
|
|
1549
|
+
) -> Result<KclValue, KclError> {
|
|
1468
1550
|
let mut meta = left_value.metadata();
|
|
1469
1551
|
meta.extend(right_value.metadata());
|
|
1470
1552
|
|
|
1471
1553
|
// First check if we are doing string concatenation.
|
|
1472
1554
|
if self.operator == BinaryOperator::Add
|
|
1473
|
-
&& let (KclValue::String { value: left,
|
|
1555
|
+
&& let (KclValue::String { value: left, .. }, KclValue::String { value: right, .. }) =
|
|
1474
1556
|
(&left_value, &right_value)
|
|
1475
1557
|
{
|
|
1476
1558
|
return Ok(KclValue::String {
|
|
@@ -1506,28 +1588,24 @@ impl Node<BinaryExpression> {
|
|
|
1506
1588
|
.await?;
|
|
1507
1589
|
return Ok(result.into());
|
|
1508
1590
|
}
|
|
1509
|
-
} else if self.operator == BinaryOperator::And
|
|
1591
|
+
} else if self.operator == BinaryOperator::And
|
|
1592
|
+
&& let (KclValue::Solid { value: left }, KclValue::Solid { value: right }) = (&left_value, &right_value)
|
|
1593
|
+
{
|
|
1510
1594
|
// Check if we have solids.
|
|
1511
|
-
|
|
1512
|
-
|
|
1513
|
-
|
|
1514
|
-
|
|
1515
|
-
|
|
1516
|
-
|
|
1517
|
-
|
|
1518
|
-
|
|
1519
|
-
|
|
1520
|
-
return Ok(result.into());
|
|
1521
|
-
}
|
|
1595
|
+
let args = Args::new_no_args(self.into(), ctx.clone());
|
|
1596
|
+
let result = crate::std::csg::inner_intersect(
|
|
1597
|
+
vec![*left.clone(), *right.clone()],
|
|
1598
|
+
Default::default(),
|
|
1599
|
+
exec_state,
|
|
1600
|
+
args,
|
|
1601
|
+
)
|
|
1602
|
+
.await?;
|
|
1603
|
+
return Ok(result.into());
|
|
1522
1604
|
}
|
|
1523
1605
|
|
|
1524
1606
|
// Check if we are doing logical operations on booleans.
|
|
1525
1607
|
if self.operator == BinaryOperator::Or || self.operator == BinaryOperator::And {
|
|
1526
|
-
let KclValue::Bool {
|
|
1527
|
-
value: left_value,
|
|
1528
|
-
meta: _,
|
|
1529
|
-
} = left_value
|
|
1530
|
-
else {
|
|
1608
|
+
let KclValue::Bool { value: left_value, .. } = left_value else {
|
|
1531
1609
|
return Err(KclError::new_semantic(KclErrorDetails::new(
|
|
1532
1610
|
format!(
|
|
1533
1611
|
"Cannot apply logical operator to non-boolean value: {}",
|
|
@@ -1536,11 +1614,7 @@ impl Node<BinaryExpression> {
|
|
|
1536
1614
|
vec![self.left.clone().into()],
|
|
1537
1615
|
)));
|
|
1538
1616
|
};
|
|
1539
|
-
let KclValue::Bool {
|
|
1540
|
-
value: right_value,
|
|
1541
|
-
meta: _,
|
|
1542
|
-
} = right_value
|
|
1543
|
-
else {
|
|
1617
|
+
let KclValue::Bool { value: right_value, .. } = right_value else {
|
|
1544
1618
|
return Err(KclError::new_semantic(KclErrorDetails::new(
|
|
1545
1619
|
format!(
|
|
1546
1620
|
"Cannot apply logical operator to non-boolean value: {}",
|
|
@@ -1687,6 +1761,13 @@ impl Node<BinaryExpression> {
|
|
|
1687
1761
|
Ok(value)
|
|
1688
1762
|
}
|
|
1689
1763
|
|
|
1764
|
+
fn missing_result_error(node: &Node<BinaryExpression>) -> KclError {
|
|
1765
|
+
KclError::new_internal(KclErrorDetails::new(
|
|
1766
|
+
"missing result while evaluating binary expression".to_owned(),
|
|
1767
|
+
vec![SourceRange::from(node)],
|
|
1768
|
+
))
|
|
1769
|
+
}
|
|
1770
|
+
|
|
1690
1771
|
fn warn_on_unknown(&self, ty: &NumericType, verb: &str, exec_state: &mut ExecState) {
|
|
1691
1772
|
if ty == &NumericType::Unknown {
|
|
1692
1773
|
let sr = self.as_source_range();
|
|
@@ -2659,12 +2740,77 @@ y = x[0mm + 1]
|
|
|
2659
2740
|
|
|
2660
2741
|
#[tokio::test(flavor = "multi_thread")]
|
|
2661
2742
|
async fn getting_property_of_plane() {
|
|
2662
|
-
// let ast = include_str!("../../tests/inputs/planestuff.kcl");
|
|
2663
2743
|
let ast = std::fs::read_to_string("tests/inputs/planestuff.kcl").unwrap();
|
|
2664
|
-
|
|
2665
2744
|
parse_execute(&ast).await.unwrap();
|
|
2666
2745
|
}
|
|
2667
2746
|
|
|
2747
|
+
#[cfg(feature = "artifact-graph")]
|
|
2748
|
+
#[tokio::test(flavor = "multi_thread")]
|
|
2749
|
+
async fn no_artifacts_from_within_hole_call() {
|
|
2750
|
+
// Test that executing stdlib KCL, like the `hole` function
|
|
2751
|
+
// (which is actually implemented in KCL not Rust)
|
|
2752
|
+
// does not generate artifacts from within the stdlib code,
|
|
2753
|
+
// only from the user code.
|
|
2754
|
+
let ast = std::fs::read_to_string("tests/inputs/sample_hole.kcl").unwrap();
|
|
2755
|
+
let out = parse_execute(&ast).await.unwrap();
|
|
2756
|
+
|
|
2757
|
+
// Get all the operations that occurred.
|
|
2758
|
+
let actual_operations = out.exec_state.global.root_module_artifacts.operations;
|
|
2759
|
+
|
|
2760
|
+
// There should be 5, for sketching the cube and applying the hole.
|
|
2761
|
+
// If the stdlib internal calls are being tracked, that's a bug,
|
|
2762
|
+
// and the actual number of operations will be something like 35.
|
|
2763
|
+
let expected = 5;
|
|
2764
|
+
assert_eq!(
|
|
2765
|
+
actual_operations.len(),
|
|
2766
|
+
expected,
|
|
2767
|
+
"expected {expected} operations, received {}:\n{actual_operations:#?}",
|
|
2768
|
+
actual_operations.len(),
|
|
2769
|
+
);
|
|
2770
|
+
}
|
|
2771
|
+
|
|
2772
|
+
#[cfg(feature = "artifact-graph")]
|
|
2773
|
+
#[tokio::test(flavor = "multi_thread")]
|
|
2774
|
+
async fn feature_tree_annotation_on_user_defined_kcl() {
|
|
2775
|
+
// The call to foo() should not generate an operation,
|
|
2776
|
+
// because its 'feature_tree' attribute has been set to false.
|
|
2777
|
+
let ast = std::fs::read_to_string("tests/inputs/feature_tree_annotation_on_user_defined_kcl.kcl").unwrap();
|
|
2778
|
+
let out = parse_execute(&ast).await.unwrap();
|
|
2779
|
+
|
|
2780
|
+
// Get all the operations that occurred.
|
|
2781
|
+
let actual_operations = out.exec_state.global.root_module_artifacts.operations;
|
|
2782
|
+
|
|
2783
|
+
let expected = 0;
|
|
2784
|
+
assert_eq!(
|
|
2785
|
+
actual_operations.len(),
|
|
2786
|
+
expected,
|
|
2787
|
+
"expected {expected} operations, received {}:\n{actual_operations:#?}",
|
|
2788
|
+
actual_operations.len(),
|
|
2789
|
+
);
|
|
2790
|
+
}
|
|
2791
|
+
|
|
2792
|
+
#[cfg(feature = "artifact-graph")]
|
|
2793
|
+
#[tokio::test(flavor = "multi_thread")]
|
|
2794
|
+
async fn no_feature_tree_annotation_on_user_defined_kcl() {
|
|
2795
|
+
// The call to foo() should generate an operation,
|
|
2796
|
+
// because @(feature_tree) defaults to true.
|
|
2797
|
+
let ast = std::fs::read_to_string("tests/inputs/no_feature_tree_annotation_on_user_defined_kcl.kcl").unwrap();
|
|
2798
|
+
let out = parse_execute(&ast).await.unwrap();
|
|
2799
|
+
|
|
2800
|
+
// Get all the operations that occurred.
|
|
2801
|
+
let actual_operations = out.exec_state.global.root_module_artifacts.operations;
|
|
2802
|
+
|
|
2803
|
+
let expected = 2;
|
|
2804
|
+
assert_eq!(
|
|
2805
|
+
actual_operations.len(),
|
|
2806
|
+
expected,
|
|
2807
|
+
"expected {expected} operations, received {}:\n{actual_operations:#?}",
|
|
2808
|
+
actual_operations.len(),
|
|
2809
|
+
);
|
|
2810
|
+
assert!(matches!(actual_operations[0], Operation::GroupBegin { .. }));
|
|
2811
|
+
assert!(matches!(actual_operations[1], Operation::GroupEnd));
|
|
2812
|
+
}
|
|
2813
|
+
|
|
2668
2814
|
#[tokio::test(flavor = "multi_thread")]
|
|
2669
2815
|
async fn custom_warning() {
|
|
2670
2816
|
let warn = r#"
|