Avatar for the KittyCAD user
KittyCAD
modeling-app
Instrumentation
Wall Time
BlogDocsChangelog

KCL: Fix 'cryptic' error when referencing a variable in its own declaration

#7309
Comparing
achalmers/6072-cryptic-error-var-ref-while-def
(
cc07400
) with
main
(
0624e42
)
CodSpeed Performance Gauge
0%
Improvements
0
Regressions
0
Untouched
82
New
0
Dropped
0
Ignored
0

Benchmarks

Passed

parse_axial-fan
rust/kcl-lib/benches/benchmark_kcl_samples.rs::benches::run_benchmarks::axial-fan::parse_axial-fan
CodSpeed Performance Gauge
+1%
403.9 µs
400.6 µs
parse_multi-axis-robot
rust/kcl-lib/benches/benchmark_kcl_samples.rs::benches::run_benchmarks::multi-axis-robot::parse_multi-axis-robot
CodSpeed Performance Gauge
+1%
475.5 µs
472.1 µs
parse_hammer
rust/kcl-lib/benches/benchmark_kcl_samples.rs::benches::run_benchmarks::hammer::parse_hammer
CodSpeed Performance Gauge
0%
954.4 ms
950.9 ms
parse_bracket
rust/kcl-lib/benches/benchmark_kcl_samples.rs::benches::run_benchmarks::bracket::parse_bracket
CodSpeed Performance Gauge
0%
41.8 ms
41.6 ms
parse_pipe-with-bend
rust/kcl-lib/benches/benchmark_kcl_samples.rs::benches::run_benchmarks::pipe-with-bend::parse_pipe-with-bend
CodSpeed Performance Gauge
0%
7.1 ms
7.1 ms
parse_surgical-drill-guide
rust/kcl-lib/benches/benchmark_kcl_samples.rs::benches::run_benchmarks::surgical-drill-guide::parse_surgical-drill-guide
CodSpeed Performance Gauge
0%
123.5 ms
123.1 ms
parse_gridfinity-baseplate
rust/kcl-lib/benches/benchmark_kcl_samples.rs::benches::run_benchmarks::gridfinity-baseplate::parse_gridfinity-baseplate
CodSpeed Performance Gauge
0%
139 ms
138.6 ms
parse_brake-rotor
rust/kcl-lib/benches/benchmark_kcl_samples.rs::benches::run_benchmarks::brake-rotor::parse_brake-rotor
CodSpeed Performance Gauge
0%
70.5 ms
70.3 ms
parse_color-cube
rust/kcl-lib/benches/benchmark_kcl_samples.rs::benches::run_benchmarks::color-cube::parse_color-cube
CodSpeed Performance Gauge
0%
18.7 ms
18.6 ms
parse_i-beam
rust/kcl-lib/benches/benchmark_kcl_samples.rs::benches::run_benchmarks::i-beam::parse_i-beam
CodSpeed Performance Gauge
0%
3.3 ms
3.3 ms
parse_gridfinity-bins
rust/kcl-lib/benches/benchmark_kcl_samples.rs::benches::run_benchmarks::gridfinity-bins::parse_gridfinity-bins
CodSpeed Performance Gauge
0%
169.2 ms
168.7 ms
parse_gridfinity-baseplate-magnets
rust/kcl-lib/benches/benchmark_kcl_samples.rs::benches::run_benchmarks::gridfinity-baseplate-magnets::parse_gridfinity-baseplate-magnets
CodSpeed Performance Gauge
0%
191.1 ms
190.6 ms
parse_shepherds-hook-bolt
rust/kcl-lib/benches/benchmark_kcl_samples.rs::benches::run_benchmarks::shepherds-hook-bolt::parse_shepherds-hook-bolt
CodSpeed Performance Gauge
0%
39.9 ms
39.8 ms
parse_helical-planetary-gearset
rust/kcl-lib/benches/benchmark_kcl_samples.rs::benches::run_benchmarks::helical-planetary-gearset::parse_helical-planetary-gearset
CodSpeed Performance Gauge
0%
60.8 ms
60.7 ms
parse_socket-head-cap-screw
rust/kcl-lib/benches/benchmark_kcl_samples.rs::benches::run_benchmarks::socket-head-cap-screw::parse_socket-head-cap-screw
CodSpeed Performance Gauge
0%
9.6 ms
9.6 ms
parse_car-wheel-assembly
rust/kcl-lib/benches/benchmark_kcl_samples.rs::benches::run_benchmarks::car-wheel-assembly::parse_car-wheel-assembly
CodSpeed Performance Gauge
0%
2.1 ms
2.1 ms
parse_herringbone-gear
rust/kcl-lib/benches/benchmark_kcl_samples.rs::benches::run_benchmarks::herringbone-gear::parse_herringbone-gear
CodSpeed Performance Gauge
0%
27.1 ms
27 ms
parse_gridfinity-bins-stacking-lip
rust/kcl-lib/benches/benchmark_kcl_samples.rs::benches::run_benchmarks::gridfinity-bins-stacking-lip::parse_gridfinity-bins-stacking-lip
CodSpeed Performance Gauge
0%
222.9 ms
222.3 ms
parse_ball-joint-rod-end
rust/kcl-lib/benches/benchmark_kcl_samples.rs::benches::run_benchmarks::ball-joint-rod-end::parse_ball-joint-rod-end
CodSpeed Performance Gauge
0%
83 ms
82.8 ms
parse_herringbone-planetary-gearset
rust/kcl-lib/benches/benchmark_kcl_samples.rs::benches::run_benchmarks::herringbone-planetary-gearset::parse_herringbone-planetary-gearset
CodSpeed Performance Gauge
0%
58.3 ms
58.2 ms
parse_engine-valve
rust/kcl-lib/benches/benchmark_kcl_samples.rs::benches::run_benchmarks::engine-valve::parse_engine-valve
CodSpeed Performance Gauge
0%
32.6 ms
32.5 ms
parse_helical-gear
rust/kcl-lib/benches/benchmark_kcl_samples.rs::benches::run_benchmarks::helical-gear::parse_helical-gear
CodSpeed Performance Gauge
0%
29.5 ms
29.4 ms
parse_makeup-mirror
rust/kcl-lib/benches/benchmark_kcl_samples.rs::benches::run_benchmarks::makeup-mirror::parse_makeup-mirror
CodSpeed Performance Gauge
0%
38.8 ms
38.7 ms
parse_truss-structure
rust/kcl-lib/benches/benchmark_kcl_samples.rs::benches::run_benchmarks::truss-structure::parse_truss-structure
CodSpeed Performance Gauge
0%
54.9 ms
54.8 ms
parse_washer
rust/kcl-lib/benches/benchmark_kcl_samples.rs::benches::run_benchmarks::washer::parse_washer
CodSpeed Performance Gauge
0%
4.4 ms
4.4 ms
parse_tooling-nest-block
rust/kcl-lib/benches/benchmark_kcl_samples.rs::benches::run_benchmarks::tooling-nest-block::parse_tooling-nest-block
CodSpeed Performance Gauge
0%
44.7 ms
44.6 ms
parse_cpu-cooler
rust/kcl-lib/benches/benchmark_kcl_samples.rs::benches::run_benchmarks::cpu-cooler::parse_cpu-cooler
CodSpeed Performance Gauge
0%
6.5 ms
6.5 ms
parse_curtain-wall-anchor-plate
rust/kcl-lib/benches/benchmark_kcl_samples.rs::benches::run_benchmarks::curtain-wall-anchor-plate::parse_curtain-wall-anchor-plate
CodSpeed Performance Gauge
0%
85.3 ms
85.1 ms
parse_kitt
rust/kcl-lib/benches/benchmark_kcl_samples.rs::benches::run_benchmarks::kitt::parse_kitt
CodSpeed Performance Gauge
0%
118.3 ms
118 ms
parse_spur-gear
rust/kcl-lib/benches/benchmark_kcl_samples.rs::benches::run_benchmarks::spur-gear::parse_spur-gear
CodSpeed Performance Gauge
0%
14.3 ms
14.3 ms
parse_food-service-spatula
rust/kcl-lib/benches/benchmark_kcl_samples.rs::benches::run_benchmarks::food-service-spatula::parse_food-service-spatula
CodSpeed Performance Gauge
0%
120 ms
119.7 ms
parse_router-template-cross-bar
rust/kcl-lib/benches/benchmark_kcl_samples.rs::benches::run_benchmarks::router-template-cross-bar::parse_router-template-cross-bar
CodSpeed Performance Gauge
0%
32.9 ms
32.8 ms
parse_hex-nut
rust/kcl-lib/benches/benchmark_kcl_samples.rs::benches::run_benchmarks::hex-nut::parse_hex-nut
CodSpeed Performance Gauge
0%
7.8 ms
7.8 ms
parse_bone-plate
rust/kcl-lib/benches/benchmark_kcl_samples.rs::benches::run_benchmarks::bone-plate::parse_bone-plate
CodSpeed Performance Gauge
0%
20.2 ms
20.1 ms
parse_ball-bearing
rust/kcl-lib/benches/benchmark_kcl_samples.rs::benches::run_benchmarks::ball-bearing::parse_ball-bearing
CodSpeed Performance Gauge
0%
25.8 ms
25.7 ms
parse_cold-plate
rust/kcl-lib/benches/benchmark_kcl_samples.rs::benches::run_benchmarks::cold-plate::parse_cold-plate
CodSpeed Performance Gauge
0%
29.2 ms
29.1 ms
parse_prosthetic-hip
rust/kcl-lib/benches/benchmark_kcl_samples.rs::benches::run_benchmarks::prosthetic-hip::parse_prosthetic-hip
CodSpeed Performance Gauge
0%
81 ms
80.8 ms
parse_math
rust/kcl-lib/benches/compiler_benchmark_criterion.rs::benches::bench_parse::parse_math
CodSpeed Performance Gauge
0%
16.2 ms
16.1 ms
parse_bench
rust/kcl-lib/benches/benchmark_kcl_samples.rs::benches::run_benchmarks::bench::parse_bench
CodSpeed Performance Gauge
0%
45 ms
44.9 ms
parse_flange
rust/kcl-lib/benches/benchmark_kcl_samples.rs::benches::run_benchmarks::flange::parse_flange
CodSpeed Performance Gauge
0%
8.4 ms
8.4 ms
parse_utility-sink
rust/kcl-lib/benches/benchmark_kcl_samples.rs::benches::run_benchmarks::utility-sink::parse_utility-sink
CodSpeed Performance Gauge
0%
137 ms
136.7 ms
parse_focusrite-scarlett-mounting-bracket
rust/kcl-lib/benches/benchmark_kcl_samples.rs::benches::run_benchmarks::focusrite-scarlett-mounting-bracket::parse_focusrite-scarlett-mounting-bracket
CodSpeed Performance Gauge
0%
46.6 ms
46.4 ms
parse_sash-window
rust/kcl-lib/benches/benchmark_kcl_samples.rs::benches::run_benchmarks::sash-window::parse_sash-window
CodSpeed Performance Gauge
0%
60.6 ms
60.5 ms
parse_t-slot-rail
rust/kcl-lib/benches/benchmark_kcl_samples.rs::benches::run_benchmarks::t-slot-rail::parse_t-slot-rail
CodSpeed Performance Gauge
0%
14 ms
14 ms
parse_helium-tank
rust/kcl-lib/benches/benchmark_kcl_samples.rs::benches::run_benchmarks::helium-tank::parse_helium-tank
CodSpeed Performance Gauge
0%
109.2 ms
109 ms
parse_sheet-metal-bracket
rust/kcl-lib/benches/benchmark_kcl_samples.rs::benches::run_benchmarks::sheet-metal-bracket::parse_sheet-metal-bracket
CodSpeed Performance Gauge
0%
23.5 ms
23.5 ms
parse_spinning-highrise-tower
rust/kcl-lib/benches/benchmark_kcl_samples.rs::benches::run_benchmarks::spinning-highrise-tower::parse_spinning-highrise-tower
CodSpeed Performance Gauge
0%
30.2 ms
30.1 ms
parse_router-template-slate
rust/kcl-lib/benches/benchmark_kcl_samples.rs::benches::run_benchmarks::router-template-slate::parse_router-template-slate
CodSpeed Performance Gauge
0%
22.3 ms
22.2 ms
parse_pillow-block-bearing
rust/kcl-lib/benches/benchmark_kcl_samples.rs::benches::run_benchmarks::pillow-block-bearing::parse_pillow-block-bearing
CodSpeed Performance Gauge
0%
314.6 µs
313.9 µs
parse_enclosure
rust/kcl-lib/benches/benchmark_kcl_samples.rs::benches::run_benchmarks::enclosure::parse_enclosure
CodSpeed Performance Gauge
0%
93 ms
92.8 ms
parse_bottle
rust/kcl-lib/benches/benchmark_kcl_samples.rs::benches::run_benchmarks::bottle::parse_bottle
CodSpeed Performance Gauge
0%
5.8 ms
5.8 ms
parse_keyboard
rust/kcl-lib/benches/benchmark_kcl_samples.rs::benches::run_benchmarks::keyboard::parse_keyboard
CodSpeed Performance Gauge
0%
122.5 ms
122.2 ms
parse_poopy-shoe
rust/kcl-lib/benches/benchmark_kcl_samples.rs::benches::run_benchmarks::poopy-shoe::parse_poopy-shoe
CodSpeed Performance Gauge
0%
39.9 ms
39.8 ms
parse_dodecahedron
rust/kcl-lib/benches/benchmark_kcl_samples.rs::benches::run_benchmarks::dodecahedron::parse_dodecahedron
CodSpeed Performance Gauge
0%
29.8 ms
29.8 ms
parse_exhaust-manifold
rust/kcl-lib/benches/benchmark_kcl_samples.rs::benches::run_benchmarks::exhaust-manifold::parse_exhaust-manifold
CodSpeed Performance Gauge
0%
57.1 ms
57 ms
parse_pipe
rust/kcl-lib/benches/benchmark_kcl_samples.rs::benches::run_benchmarks::pipe::parse_pipe
CodSpeed Performance Gauge
0%
2.8 ms
2.8 ms
parse_lego
rust/kcl-lib/benches/benchmark_kcl_samples.rs::benches::run_benchmarks::lego::parse_lego
CodSpeed Performance Gauge
0%
18.3 ms
18.3 ms
parse_counterdrilled-weldment
rust/kcl-lib/benches/benchmark_kcl_samples.rs::benches::run_benchmarks::counterdrilled-weldment::parse_counterdrilled-weldment
CodSpeed Performance Gauge
0%
42.8 ms
42.7 ms
parse_spur-reduction-gearset
rust/kcl-lib/benches/benchmark_kcl_samples.rs::benches::run_benchmarks::spur-reduction-gearset::parse_spur-reduction-gearset
CodSpeed Performance Gauge
0%
13.2 ms
13.2 ms
parse_pdu-faceplate
rust/kcl-lib/benches/benchmark_kcl_samples.rs::benches::run_benchmarks::pdu-faceplate::parse_pdu-faceplate
CodSpeed Performance Gauge
0%
54.7 ms
54.6 ms
parse_pipe-flange-assembly
rust/kcl-lib/benches/benchmark_kcl_samples.rs::benches::run_benchmarks::pipe-flange-assembly::parse_pipe-flange-assembly
CodSpeed Performance Gauge
0%
8.6 ms
8.6 ms
parse_countersunk-plate
rust/kcl-lib/benches/benchmark_kcl_samples.rs::benches::run_benchmarks::countersunk-plate::parse_countersunk-plate
CodSpeed Performance Gauge
0%
13.4 ms
13.4 ms
parse_wing-spar
rust/kcl-lib/benches/benchmark_kcl_samples.rs::benches::run_benchmarks::wing-spar::parse_wing-spar
CodSpeed Performance Gauge
0%
55.8 ms
55.7 ms
parse_gear-rack
rust/kcl-lib/benches/benchmark_kcl_samples.rs::benches::run_benchmarks::gear-rack::parse_gear-rack
CodSpeed Performance Gauge
0%
13.8 ms
13.8 ms
parse_mounting-plate
rust/kcl-lib/benches/benchmark_kcl_samples.rs::benches::run_benchmarks::mounting-plate::parse_mounting-plate
CodSpeed Performance Gauge
0%
25.6 ms
25.5 ms
parse_french-press
rust/kcl-lib/benches/benchmark_kcl_samples.rs::benches::run_benchmarks::french-press::parse_french-press
CodSpeed Performance Gauge
0%
70.8 ms
70.7 ms
parse_cycloidal-gear
rust/kcl-lib/benches/benchmark_kcl_samples.rs::benches::run_benchmarks::cycloidal-gear::parse_cycloidal-gear
CodSpeed Performance Gauge
0%
36.2 ms
36.1 ms
parse_thermal-block-insert
rust/kcl-lib/benches/benchmark_kcl_samples.rs::benches::run_benchmarks::thermal-block-insert::parse_thermal-block-insert
CodSpeed Performance Gauge
0%
11.1 ms
11.1 ms
parse_clock
rust/kcl-lib/benches/benchmark_kcl_samples.rs::benches::run_benchmarks::clock::parse_clock
CodSpeed Performance Gauge
0%
271.6 ms
271.1 ms
parse_telemetry-antenna
rust/kcl-lib/benches/benchmark_kcl_samples.rs::benches::run_benchmarks::telemetry-antenna::parse_telemetry-antenna
CodSpeed Performance Gauge
0%
28.2 ms
28.1 ms
parse_big_kitt
rust/kcl-lib/benches/compiler_benchmark_criterion.rs::benches::bench_parse::parse_big_kitt
CodSpeed Performance Gauge
0%
139.1 ms
138.9 ms
parse_koch snowflake
rust/kcl-lib/benches/compiler_benchmark_criterion.rs::benches::bench_parse::parse_koch snowflake
CodSpeed Performance Gauge
0%
152.2 ms
151.9 ms
parse_walkie-talkie
rust/kcl-lib/benches/benchmark_kcl_samples.rs::benches::run_benchmarks::walkie-talkie::parse_walkie-talkie
CodSpeed Performance Gauge
0%
4.6 ms
4.6 ms
parse_mike_stress_test
rust/kcl-lib/benches/compiler_benchmark_criterion.rs::benches::bench_parse::parse_mike_stress_test
CodSpeed Performance Gauge
0%
511 ms
510.4 ms
parse_cube
rust/kcl-lib/benches/compiler_benchmark_criterion.rs::benches::bench_parse::parse_cube
CodSpeed Performance Gauge
0%
6 ms
6 ms
parse_pipes_on_pipes
rust/kcl-lib/benches/compiler_benchmark_criterion.rs::benches::bench_parse::parse_pipes_on_pipes
CodSpeed Performance Gauge
0%
407 ms
406.6 ms
digest_pipes_on_pipes
rust/kcl-lib/benches/digest_benchmark.rs::benches::bench_digest::digest_pipes_on_pipes
CodSpeed Performance Gauge
0%
19.4 ms
19.4 ms
digest_mike_stress_test
rust/kcl-lib/benches/digest_benchmark.rs::benches::bench_digest::digest_mike_stress_test
CodSpeed Performance Gauge
0%
20.9 ms
20.9 ms
digest_big_kitt
rust/kcl-lib/benches/digest_benchmark.rs::benches::bench_digest::digest_big_kitt
CodSpeed Performance Gauge
0%
6.5 ms
6.5 ms
digest_math
rust/kcl-lib/benches/digest_benchmark.rs::benches::bench_digest::digest_math
CodSpeed Performance Gauge
0%
1.2 ms
1.2 ms
digest_lsystem
rust/kcl-lib/benches/digest_benchmark.rs::benches::bench_digest::digest_lsystem
CodSpeed Performance Gauge
0%
1.9 ms
1.9 ms
digest_cube
rust/kcl-lib/benches/digest_benchmark.rs::benches::bench_digest::digest_cube
CodSpeed Performance Gauge
0%
420.1 µs
420.3 µs

Commits

Click on a commit to change the comparison range
Base
main
0624e42
0%
KCL: Fix 'cryptic' error when referencing a variable in its own declaration Previously, `x = cos(x)` would just say "`x` is undefined". Now it says that `x` cannot be referenced in its own definition, try using a different variable instead. To do this, I've added a new `Option<String>` field to the mod-local executor context, tracking the current variable declaration. This means cloning some strings, implying a small performance hit. I think it's fine, for the better diagnostics. In the future we could refactor this to use a &str or store variable labels in stack-allocated strings like docs.rs/compact_str or something. Closes https://github.com/KittyCAD/modeling-app/issues/6072#issuecomment-2923227477
cc07400
1 day ago
by adamchalmers
© 2025 CodSpeed Technology
Home Terms PrivacyDocs