diff --git a/public/kcl-samples/bench/bench-parts.kcl b/public/kcl-samples/bench/bench-parts.kcl index 7673a1847..6d18e3d61 100644 --- a/public/kcl-samples/bench/bench-parts.kcl +++ b/public/kcl-samples/bench/bench-parts.kcl @@ -57,9 +57,9 @@ fn connectorSketch(@plane, start) { export fn connector(@plane, length) { connectorSketch(plane, start = [-12, 8]) - |> extrude(length = length) + |> extrude(length) connectorSketch(plane, start = [16, 8]) - |> extrude(length = length) + |> extrude(length) return 0 } @@ -79,7 +79,7 @@ fn seatSlatSketch(@plane) { export fn seatSlats(@plane, length) { seatSlatSketch(plane) - |> extrude(length = length) + |> extrude(length) return 0 } @@ -99,7 +99,7 @@ fn backSlatsSketch(@plane) { export fn backSlats(@plane, length) { b = backSlatsSketch(plane) - |> extrude(length = length) + |> extrude(length) return b } diff --git a/public/kcl-samples/enclosure/main.kcl b/public/kcl-samples/enclosure/main.kcl index e8c5ac2ea..162dc478e 100644 --- a/public/kcl-samples/enclosure/main.kcl +++ b/public/kcl-samples/enclosure/main.kcl @@ -15,7 +15,7 @@ holeDia = 4 sketch001 = startSketchOn(XY) |> startProfile(at = [0, 0]) |> angledLine(angle = 0, length = width, tag = $rectangleSegmentA001) - |> angledLine(angle = segAng(rectangleSegmentA001) + 90, length = length, tag = $rectangleSegmentB001) + |> angledLine(angle = segAng(rectangleSegmentA001) + 90, length, tag = $rectangleSegmentB001) |> angledLine(angle = segAng(rectangleSegmentA001), length = -segLen(rectangleSegmentA001), tag = $rectangleSegmentC001) |> line(endAbsolute = [profileStartX(%), profileStartY(%)], tag = $rectangleSegmentD001) |> close() @@ -74,7 +74,7 @@ function001([ sketch003 = startSketchOn(XY) |> startProfile(at = [width * 1.2, 0]) |> angledLine(angle = 0, length = width, tag = $rectangleSegmentA002) - |> angledLine(angle = segAng(rectangleSegmentA001) + 90, length = length, tag = $rectangleSegmentB002) + |> angledLine(angle = segAng(rectangleSegmentA001) + 90, length, tag = $rectangleSegmentB002) |> angledLine(angle = segAng(rectangleSegmentA001), length = -segLen(rectangleSegmentA001), tag = $rectangleSegmentC002) |> line(endAbsolute = [profileStartX(%), profileStartY(%)], tag = $rectangleSegmentD002) |> close() diff --git a/rust/kcl-lib/src/execution/exec_ast.rs b/rust/kcl-lib/src/execution/exec_ast.rs index c4593d166..372027744 100644 --- a/rust/kcl-lib/src/execution/exec_ast.rs +++ b/rust/kcl-lib/src/execution/exec_ast.rs @@ -1311,10 +1311,15 @@ impl Node { Some(l) => { fn_args.insert(l.name.clone(), arg); } - None => errors.push(arg), + None => { + if let Some(id) = arg_expr.arg.ident_name() { + fn_args.insert(id.to_owned(), arg); + } else { + errors.push(arg); + } + } } } - let fn_args = fn_args; // remove mutability // Evaluate the unlabeled first param, if any exists. let unlabeled = if let Some(ref arg_expr) = self.unlabeled { @@ -1323,12 +1328,15 @@ impl Node { let value = ctx .execute_expr(arg_expr, exec_state, &metadata, &[], StatementKind::Expression) .await?; - Some(Arg::new(value, source_range)) + + let label = arg_expr.ident_name().map(str::to_owned); + + Some((label, Arg::new(value, source_range))) } else { None }; - let args = Args::new_kw( + let mut args = Args::new_kw( KwArgs { unlabeled, labeled: fn_args, @@ -1347,6 +1355,20 @@ impl Node { )); } + let formals = func.args(false); + + // If it's possible the input arg was meant to be labelled and we probably don't want to use + // it as the input arg, then treat it as labelled. + if let Some((Some(label), _)) = &args.kw_args.unlabeled { + if (formals.iter().all(|a| a.label_required) || exec_state.pipe_value().is_some()) + && formals.iter().any(|a| &a.name == label && a.label_required) + && !args.kw_args.labeled.contains_key(label) + { + let (label, arg) = args.kw_args.unlabeled.take().unwrap(); + args.kw_args.labeled.insert(label.unwrap(), arg); + } + } + #[cfg(feature = "artifact-graph")] let op = if func.feature_tree_operation() { let op_labeled_args = args @@ -1368,7 +1390,6 @@ impl Node { None }; - let formals = func.args(false); for (label, arg) in &args.kw_args.labeled { match formals.iter().find(|p| &p.name == label) { Some(p) => { @@ -1865,6 +1886,21 @@ fn type_check_params_kw( args: &mut KwArgs, exec_state: &mut ExecState, ) -> Result<(), KclError> { + // If it's possible the input arg was meant to be labelled and we probably don't want to use + // it as the input arg, then treat it as labelled. + if let Some((Some(label), _)) = &args.unlabeled { + if (function_expression.params.iter().all(|p| p.labeled) || exec_state.pipe_value().is_some()) + && function_expression + .params + .iter() + .any(|p| &p.identifier.name == label && p.labeled) + && !args.labeled.contains_key(label) + { + let (label, arg) = args.unlabeled.take().unwrap(); + args.labeled.insert(label.unwrap(), arg); + } + } + for (label, arg) in &mut args.labeled { match function_expression.params.iter().find(|p| &p.identifier.name == label) { Some(p) => { @@ -1959,10 +1995,11 @@ fn type_check_params_kw( if let Some(arg) = &mut args.unlabeled { if let Some(p) = function_expression.params.iter().find(|p| !p.labeled) { if let Some(ty) = &p.type_ { - arg.value = arg + arg.1.value = arg + .1 .value .coerce( - &RuntimeType::from_parsed(ty.inner.clone(), exec_state, arg.source_range) + &RuntimeType::from_parsed(ty.inner.clone(), exec_state, arg.1.source_range) .map_err(|e| KclError::Semantic(e.into()))?, exec_state, ) @@ -1974,9 +2011,9 @@ fn type_check_params_kw( .map(|n| format!("`{}`", n)) .unwrap_or_else(|| "this function".to_owned()), ty.inner, - arg.value.human_friendly_type() + arg.1.value.human_friendly_type() ), - source_ranges: vec![arg.source_range], + source_ranges: vec![arg.1.source_range], }) })?; } @@ -2139,10 +2176,11 @@ impl FunctionSource { if let Some(arg) = &mut args.kw_args.unlabeled { if let Some(p) = ast.params.iter().find(|p| !p.labeled) { if let Some(ty) = &p.type_ { - arg.value = arg + arg.1.value = arg + .1 .value .coerce( - &RuntimeType::from_parsed(ty.inner.clone(), exec_state, arg.source_range) + &RuntimeType::from_parsed(ty.inner.clone(), exec_state, arg.1.source_range) .map_err(|e| KclError::Semantic(e.into()))?, exec_state, ) @@ -2152,7 +2190,7 @@ impl FunctionSource { "The input argument of {} requires a value with type `{}`, but found {}", props.name, ty.inner, - arg.value.human_friendly_type(), + arg.1.value.human_friendly_type(), ), source_ranges: vec![callsite], }) @@ -2224,7 +2262,7 @@ impl FunctionSource { .kw_args .unlabeled .as_ref() - .map(|arg| OpArg::new(OpKclValue::from(&arg.value), arg.source_range)), + .map(|arg| OpArg::new(OpKclValue::from(&arg.1.value), arg.1.source_range)), labeled_args: op_labeled_args, }, source_range: callsite, @@ -2665,13 +2703,12 @@ a = foo() #[tokio::test(flavor = "multi_thread")] async fn test_sensible_error_when_missing_equals_in_kwarg() { - for (i, call) in ["f(x=1,y)", "f(x=1,3,z)", "f(x=1,y,z=1)", "f(x=1, 3 + 4, z=1)"] + for (i, call) in ["f(x=1,3,0)", "f(x=1,3,z)", "f(x=1,0,z=1)", "f(x=1, 3 + 4, z)"] .into_iter() .enumerate() { let program = format!( "fn foo() {{ return 0 }} -y = 42 z = 0 fn f(x, y, z) {{ return 0 }} {call}" @@ -2691,9 +2728,10 @@ fn f(x, y, z) {{ return 0 }} #[tokio::test(flavor = "multi_thread")] async fn default_param_for_unlabeled() { - // Tests that the input param for myExtrude is taken from the pipeline value. + // Tests that the input param for myExtrude is taken from the pipeline value and same-name + // keyword args. let ast = r#"fn myExtrude(@sk, length) { - return extrude(sk, length = length) + return extrude(sk, length) } sketch001 = startSketchOn(XY) |> circle(center = [0, 0], radius = 93.75) @@ -2703,6 +2741,18 @@ sketch001 = startSketchOn(XY) parse_execute(ast).await.unwrap(); } + #[tokio::test(flavor = "multi_thread")] + async fn dont_use_unlabelled_as_input() { + // `length` should be used as the `length` argument to extrude, not the unlabelled input + let ast = r#"length = 10 +startSketchOn(XY) + |> circle(center = [0, 0], radius = 93.75) + |> extrude(length) +"#; + + parse_execute(ast).await.unwrap(); + } + #[tokio::test(flavor = "multi_thread")] async fn ascription_in_binop() { let ast = r#"foo = tan(0): number(rad) - 4deg"#; diff --git a/rust/kcl-lib/src/parsing/ast/types/mod.rs b/rust/kcl-lib/src/parsing/ast/types/mod.rs index 6e2dafaf6..2d0fa7bc5 100644 --- a/rust/kcl-lib/src/parsing/ast/types/mod.rs +++ b/rust/kcl-lib/src/parsing/ast/types/mod.rs @@ -186,7 +186,7 @@ impl Node { self.comment_start = start; } - pub fn map_ref<'a, U: 'a>(&'a self, f: fn(&'a T) -> U) -> Node { + pub fn map_ref<'a, U: 'a>(&'a self, f: impl Fn(&'a T) -> U) -> Node { Node { inner: f(&self.inner), start: self.start, @@ -1187,7 +1187,7 @@ impl Expr { pub fn ident_name(&self) -> Option<&str> { match self { - Expr::Name(ident) => Some(&ident.name.name), + Expr::Name(name) => name.local_ident().map(|n| n.inner), _ => None, } } @@ -2371,7 +2371,7 @@ impl Name { pub fn local_ident(&self) -> Option> { if self.path.is_empty() && !self.abs_path { - Some(self.name.map_ref(|n| &n.name)) + Some(self.name.map_ref(|n| &*n.name)) } else { None } diff --git a/rust/kcl-lib/src/std/args.rs b/rust/kcl-lib/src/std/args.rs index ec8d7aa5c..71f4e891e 100644 --- a/rust/kcl-lib/src/std/args.rs +++ b/rust/kcl-lib/src/std/args.rs @@ -59,7 +59,9 @@ impl Arg { #[derive(Debug, Clone, Default)] pub struct KwArgs { /// Unlabeled keyword args. Currently only the first arg can be unlabeled. - pub unlabeled: Option, + /// If the argument was a local variable, then the first element of the tuple is its name + /// which may be used to treat this arg as a labelled arg. + pub unlabeled: Option<(Option, Arg)>, /// Labeled args. pub labeled: IndexMap, pub errors: Vec, @@ -342,6 +344,7 @@ impl Args { self.kw_args .unlabeled .as_ref() + .map(|(_, a)| a) .or(self.args.first()) .or(self.pipe_value.as_ref()) } diff --git a/rust/kcl-lib/src/std/array.rs b/rust/kcl-lib/src/std/array.rs index 280b233fe..ef6fe7e88 100644 --- a/rust/kcl-lib/src/std/array.rs +++ b/rust/kcl-lib/src/std/array.rs @@ -48,7 +48,7 @@ async fn call_map_closure( ctxt: &ExecutorContext, ) -> Result { let kw_args = KwArgs { - unlabeled: Some(Arg::new(input, source_range)), + unlabeled: Some((None, Arg::new(input, source_range))), labeled: Default::default(), errors: Vec::new(), }; @@ -104,7 +104,7 @@ async fn call_reduce_closure( let mut labeled = IndexMap::with_capacity(1); labeled.insert("accum".to_string(), Arg::new(accum, source_range)); let kw_args = KwArgs { - unlabeled: Some(Arg::new(elem, source_range)), + unlabeled: Some((None, Arg::new(elem, source_range))), labeled, errors: Vec::new(), }; diff --git a/rust/kcl-lib/src/std/patterns.rs b/rust/kcl-lib/src/std/patterns.rs index 1ff3a6457..2805242c0 100644 --- a/rust/kcl-lib/src/std/patterns.rs +++ b/rust/kcl-lib/src/std/patterns.rs @@ -424,7 +424,7 @@ async fn make_transform( meta: vec![source_range.into()], }; let kw_args = KwArgs { - unlabeled: Some(Arg::new(repetition_num, source_range)), + unlabeled: Some((None, Arg::new(repetition_num, source_range))), labeled: Default::default(), errors: Vec::new(), }; diff --git a/rust/kcl-lib/tests/kcl_samples/enclosure/ast.snap b/rust/kcl-lib/tests/kcl_samples/enclosure/ast.snap index 5ac142a7a..dae6f0541 100644 --- a/rust/kcl-lib/tests/kcl_samples/enclosure/ast.snap +++ b/rust/kcl-lib/tests/kcl_samples/enclosure/ast.snap @@ -456,13 +456,7 @@ description: Result of parsing enclosure.kcl }, { "type": "LabeledArg", - "label": { - "commentStart": 0, - "end": 0, - "name": "length", - "start": 0, - "type": "Identifier" - }, + "label": null, "arg": { "abs_path": false, "commentStart": 0, @@ -3178,13 +3172,7 @@ description: Result of parsing enclosure.kcl }, { "type": "LabeledArg", - "label": { - "commentStart": 0, - "end": 0, - "name": "length", - "start": 0, - "type": "Identifier" - }, + "label": null, "arg": { "abs_path": false, "commentStart": 0, diff --git a/rust/kcl-lib/tests/kcl_samples/enclosure/program_memory.snap b/rust/kcl-lib/tests/kcl_samples/enclosure/program_memory.snap index 6e6421d4a..4985d5492 100644 --- a/rust/kcl-lib/tests/kcl_samples/enclosure/program_memory.snap +++ b/rust/kcl-lib/tests/kcl_samples/enclosure/program_memory.snap @@ -28,9 +28,9 @@ description: Variables in memory after executing enclosure.kcl "id": "[uuid]", "sourceRange": [], "tag": { - "commentStart": 485, - "end": 506, - "start": 485, + "commentStart": 476, + "end": 497, + "start": 476, "type": "TagDeclarator", "value": "rectangleSegmentB001" }, @@ -41,9 +41,9 @@ description: Variables in memory after executing enclosure.kcl "id": "[uuid]", "sourceRange": [], "tag": { - "commentStart": 608, - "end": 629, - "start": 608, + "commentStart": 599, + "end": 620, + "start": 599, "type": "TagDeclarator", "value": "rectangleSegmentC001" }, @@ -54,9 +54,9 @@ description: Variables in memory after executing enclosure.kcl "id": "[uuid]", "sourceRange": [], "tag": { - "commentStart": 699, - "end": 720, - "start": 699, + "commentStart": 690, + "end": 711, + "start": 690, "type": "TagDeclarator", "value": "rectangleSegmentD001" }, @@ -102,9 +102,9 @@ description: Variables in memory after executing enclosure.kcl 0.0 ], "tag": { - "commentStart": 485, - "end": 506, - "start": 485, + "commentStart": 476, + "end": 497, + "start": 476, "type": "TagDeclarator", "value": "rectangleSegmentB001" }, @@ -127,9 +127,9 @@ description: Variables in memory after executing enclosure.kcl 175.0 ], "tag": { - "commentStart": 608, - "end": 629, - "start": 608, + "commentStart": 599, + "end": 620, + "start": 599, "type": "TagDeclarator", "value": "rectangleSegmentC001" }, @@ -152,9 +152,9 @@ description: Variables in memory after executing enclosure.kcl 175.0 ], "tag": { - "commentStart": 699, - "end": 720, - "start": 699, + "commentStart": 690, + "end": 711, + "start": 690, "type": "TagDeclarator", "value": "rectangleSegmentD001" }, @@ -354,9 +354,9 @@ description: Variables in memory after executing enclosure.kcl "id": "[uuid]", "sourceRange": [], "tag": { - "commentStart": 2445, - "end": 2466, - "start": 2445, + "commentStart": 2436, + "end": 2457, + "start": 2436, "type": "TagDeclarator", "value": "rectangleSegmentA002" }, @@ -367,9 +367,9 @@ description: Variables in memory after executing enclosure.kcl "id": "[uuid]", "sourceRange": [], "tag": { - "commentStart": 2550, - "end": 2571, - "start": 2550, + "commentStart": 2532, + "end": 2553, + "start": 2532, "type": "TagDeclarator", "value": "rectangleSegmentB002" }, @@ -380,9 +380,9 @@ description: Variables in memory after executing enclosure.kcl "id": "[uuid]", "sourceRange": [], "tag": { - "commentStart": 2673, - "end": 2694, - "start": 2673, + "commentStart": 2655, + "end": 2676, + "start": 2655, "type": "TagDeclarator", "value": "rectangleSegmentC002" }, @@ -393,9 +393,9 @@ description: Variables in memory after executing enclosure.kcl "id": "[uuid]", "sourceRange": [], "tag": { - "commentStart": 2764, - "end": 2785, - "start": 2764, + "commentStart": 2746, + "end": 2767, + "start": 2746, "type": "TagDeclarator", "value": "rectangleSegmentD002" }, @@ -416,9 +416,9 @@ description: Variables in memory after executing enclosure.kcl 0.0 ], "tag": { - "commentStart": 2445, - "end": 2466, - "start": 2445, + "commentStart": 2436, + "end": 2457, + "start": 2436, "type": "TagDeclarator", "value": "rectangleSegmentA002" }, @@ -441,9 +441,9 @@ description: Variables in memory after executing enclosure.kcl 0.0 ], "tag": { - "commentStart": 2550, - "end": 2571, - "start": 2550, + "commentStart": 2532, + "end": 2553, + "start": 2532, "type": "TagDeclarator", "value": "rectangleSegmentB002" }, @@ -466,9 +466,9 @@ description: Variables in memory after executing enclosure.kcl 175.0 ], "tag": { - "commentStart": 2673, - "end": 2694, - "start": 2673, + "commentStart": 2655, + "end": 2676, + "start": 2655, "type": "TagDeclarator", "value": "rectangleSegmentC002" }, @@ -491,9 +491,9 @@ description: Variables in memory after executing enclosure.kcl 175.0 ], "tag": { - "commentStart": 2764, - "end": 2785, - "start": 2764, + "commentStart": 2746, + "end": 2767, + "start": 2746, "type": "TagDeclarator", "value": "rectangleSegmentD002" }, @@ -693,9 +693,9 @@ description: Variables in memory after executing enclosure.kcl "id": "[uuid]", "sourceRange": [], "tag": { - "commentStart": 4147, - "end": 4168, - "start": 4147, + "commentStart": 4129, + "end": 4150, + "start": 4129, "type": "TagDeclarator", "value": "rectangleSegmentA003" }, @@ -706,9 +706,9 @@ description: Variables in memory after executing enclosure.kcl "id": "[uuid]", "sourceRange": [], "tag": { - "commentStart": 4274, - "end": 4295, - "start": 4274, + "commentStart": 4256, + "end": 4277, + "start": 4256, "type": "TagDeclarator", "value": "rectangleSegmentB003" }, @@ -719,9 +719,9 @@ description: Variables in memory after executing enclosure.kcl "id": "[uuid]", "sourceRange": [], "tag": { - "commentStart": 4397, - "end": 4418, - "start": 4397, + "commentStart": 4379, + "end": 4400, + "start": 4379, "type": "TagDeclarator", "value": "rectangleSegmentC003" }, @@ -732,9 +732,9 @@ description: Variables in memory after executing enclosure.kcl "id": "[uuid]", "sourceRange": [], "tag": { - "commentStart": 4488, - "end": 4509, - "start": 4488, + "commentStart": 4470, + "end": 4491, + "start": 4470, "type": "TagDeclarator", "value": "rectangleSegmentD003" }, @@ -755,9 +755,9 @@ description: Variables in memory after executing enclosure.kcl 3.0 ], "tag": { - "commentStart": 4147, - "end": 4168, - "start": 4147, + "commentStart": 4129, + "end": 4150, + "start": 4129, "type": "TagDeclarator", "value": "rectangleSegmentA003" }, @@ -780,9 +780,9 @@ description: Variables in memory after executing enclosure.kcl 3.0 ], "tag": { - "commentStart": 4274, - "end": 4295, - "start": 4274, + "commentStart": 4256, + "end": 4277, + "start": 4256, "type": "TagDeclarator", "value": "rectangleSegmentB003" }, @@ -805,9 +805,9 @@ description: Variables in memory after executing enclosure.kcl 172.0 ], "tag": { - "commentStart": 4397, - "end": 4418, - "start": 4397, + "commentStart": 4379, + "end": 4400, + "start": 4379, "type": "TagDeclarator", "value": "rectangleSegmentC003" }, @@ -830,9 +830,9 @@ description: Variables in memory after executing enclosure.kcl 172.0 ], "tag": { - "commentStart": 4488, - "end": 4509, - "start": 4488, + "commentStart": 4470, + "end": 4491, + "start": 4470, "type": "TagDeclarator", "value": "rectangleSegmentD003" }, @@ -896,9 +896,9 @@ description: Variables in memory after executing enclosure.kcl "id": "[uuid]", "sourceRange": [], "tag": { - "commentStart": 2445, - "end": 2466, - "start": 2445, + "commentStart": 2436, + "end": 2457, + "start": 2436, "type": "TagDeclarator", "value": "rectangleSegmentA002" }, @@ -909,9 +909,9 @@ description: Variables in memory after executing enclosure.kcl "id": "[uuid]", "sourceRange": [], "tag": { - "commentStart": 2550, - "end": 2571, - "start": 2550, + "commentStart": 2532, + "end": 2553, + "start": 2532, "type": "TagDeclarator", "value": "rectangleSegmentB002" }, @@ -922,9 +922,9 @@ description: Variables in memory after executing enclosure.kcl "id": "[uuid]", "sourceRange": [], "tag": { - "commentStart": 2673, - "end": 2694, - "start": 2673, + "commentStart": 2655, + "end": 2676, + "start": 2655, "type": "TagDeclarator", "value": "rectangleSegmentC002" }, @@ -935,9 +935,9 @@ description: Variables in memory after executing enclosure.kcl "id": "[uuid]", "sourceRange": [], "tag": { - "commentStart": 2764, - "end": 2785, - "start": 2764, + "commentStart": 2746, + "end": 2767, + "start": 2746, "type": "TagDeclarator", "value": "rectangleSegmentD002" }, @@ -958,9 +958,9 @@ description: Variables in memory after executing enclosure.kcl 0.0 ], "tag": { - "commentStart": 2445, - "end": 2466, - "start": 2445, + "commentStart": 2436, + "end": 2457, + "start": 2436, "type": "TagDeclarator", "value": "rectangleSegmentA002" }, @@ -983,9 +983,9 @@ description: Variables in memory after executing enclosure.kcl 0.0 ], "tag": { - "commentStart": 2550, - "end": 2571, - "start": 2550, + "commentStart": 2532, + "end": 2553, + "start": 2532, "type": "TagDeclarator", "value": "rectangleSegmentB002" }, @@ -1008,9 +1008,9 @@ description: Variables in memory after executing enclosure.kcl 175.0 ], "tag": { - "commentStart": 2673, - "end": 2694, - "start": 2673, + "commentStart": 2655, + "end": 2676, + "start": 2655, "type": "TagDeclarator", "value": "rectangleSegmentC002" }, @@ -1033,9 +1033,9 @@ description: Variables in memory after executing enclosure.kcl 175.0 ], "tag": { - "commentStart": 2764, - "end": 2785, - "start": 2764, + "commentStart": 2746, + "end": 2767, + "start": 2746, "type": "TagDeclarator", "value": "rectangleSegmentD002" }, @@ -1495,9 +1495,9 @@ description: Variables in memory after executing enclosure.kcl 0.0 ], "tag": { - "commentStart": 485, - "end": 506, - "start": 485, + "commentStart": 476, + "end": 497, + "start": 476, "type": "TagDeclarator", "value": "rectangleSegmentB001" }, @@ -1520,9 +1520,9 @@ description: Variables in memory after executing enclosure.kcl 175.0 ], "tag": { - "commentStart": 608, - "end": 629, - "start": 608, + "commentStart": 599, + "end": 620, + "start": 599, "type": "TagDeclarator", "value": "rectangleSegmentC001" }, @@ -1545,9 +1545,9 @@ description: Variables in memory after executing enclosure.kcl 175.0 ], "tag": { - "commentStart": 699, - "end": 720, - "start": 699, + "commentStart": 690, + "end": 711, + "start": 690, "type": "TagDeclarator", "value": "rectangleSegmentD001" }, @@ -1669,9 +1669,9 @@ description: Variables in memory after executing enclosure.kcl 0.0 ], "tag": { - "commentStart": 2445, - "end": 2466, - "start": 2445, + "commentStart": 2436, + "end": 2457, + "start": 2436, "type": "TagDeclarator", "value": "rectangleSegmentA002" }, @@ -1694,9 +1694,9 @@ description: Variables in memory after executing enclosure.kcl 0.0 ], "tag": { - "commentStart": 2550, - "end": 2571, - "start": 2550, + "commentStart": 2532, + "end": 2553, + "start": 2532, "type": "TagDeclarator", "value": "rectangleSegmentB002" }, @@ -1719,9 +1719,9 @@ description: Variables in memory after executing enclosure.kcl 175.0 ], "tag": { - "commentStart": 2673, - "end": 2694, - "start": 2673, + "commentStart": 2655, + "end": 2676, + "start": 2655, "type": "TagDeclarator", "value": "rectangleSegmentC002" }, @@ -1744,9 +1744,9 @@ description: Variables in memory after executing enclosure.kcl 175.0 ], "tag": { - "commentStart": 2764, - "end": 2785, - "start": 2764, + "commentStart": 2746, + "end": 2767, + "start": 2746, "type": "TagDeclarator", "value": "rectangleSegmentD002" }, @@ -1868,9 +1868,9 @@ description: Variables in memory after executing enclosure.kcl 3.0 ], "tag": { - "commentStart": 4147, - "end": 4168, - "start": 4147, + "commentStart": 4129, + "end": 4150, + "start": 4129, "type": "TagDeclarator", "value": "rectangleSegmentA003" }, @@ -1893,9 +1893,9 @@ description: Variables in memory after executing enclosure.kcl 3.0 ], "tag": { - "commentStart": 4274, - "end": 4295, - "start": 4274, + "commentStart": 4256, + "end": 4277, + "start": 4256, "type": "TagDeclarator", "value": "rectangleSegmentB003" }, @@ -1918,9 +1918,9 @@ description: Variables in memory after executing enclosure.kcl 172.0 ], "tag": { - "commentStart": 4397, - "end": 4418, - "start": 4397, + "commentStart": 4379, + "end": 4400, + "start": 4379, "type": "TagDeclarator", "value": "rectangleSegmentC003" }, @@ -1943,9 +1943,9 @@ description: Variables in memory after executing enclosure.kcl 172.0 ], "tag": { - "commentStart": 4488, - "end": 4509, - "start": 4488, + "commentStart": 4470, + "end": 4491, + "start": 4470, "type": "TagDeclarator", "value": "rectangleSegmentD003" }, @@ -2009,9 +2009,9 @@ description: Variables in memory after executing enclosure.kcl "id": "[uuid]", "sourceRange": [], "tag": { - "commentStart": 2445, - "end": 2466, - "start": 2445, + "commentStart": 2436, + "end": 2457, + "start": 2436, "type": "TagDeclarator", "value": "rectangleSegmentA002" }, @@ -2022,9 +2022,9 @@ description: Variables in memory after executing enclosure.kcl "id": "[uuid]", "sourceRange": [], "tag": { - "commentStart": 2550, - "end": 2571, - "start": 2550, + "commentStart": 2532, + "end": 2553, + "start": 2532, "type": "TagDeclarator", "value": "rectangleSegmentB002" }, @@ -2035,9 +2035,9 @@ description: Variables in memory after executing enclosure.kcl "id": "[uuid]", "sourceRange": [], "tag": { - "commentStart": 2673, - "end": 2694, - "start": 2673, + "commentStart": 2655, + "end": 2676, + "start": 2655, "type": "TagDeclarator", "value": "rectangleSegmentC002" }, @@ -2048,9 +2048,9 @@ description: Variables in memory after executing enclosure.kcl "id": "[uuid]", "sourceRange": [], "tag": { - "commentStart": 2764, - "end": 2785, - "start": 2764, + "commentStart": 2746, + "end": 2767, + "start": 2746, "type": "TagDeclarator", "value": "rectangleSegmentD002" }, @@ -2071,9 +2071,9 @@ description: Variables in memory after executing enclosure.kcl 0.0 ], "tag": { - "commentStart": 2445, - "end": 2466, - "start": 2445, + "commentStart": 2436, + "end": 2457, + "start": 2436, "type": "TagDeclarator", "value": "rectangleSegmentA002" }, @@ -2096,9 +2096,9 @@ description: Variables in memory after executing enclosure.kcl 0.0 ], "tag": { - "commentStart": 2550, - "end": 2571, - "start": 2550, + "commentStart": 2532, + "end": 2553, + "start": 2532, "type": "TagDeclarator", "value": "rectangleSegmentB002" }, @@ -2121,9 +2121,9 @@ description: Variables in memory after executing enclosure.kcl 175.0 ], "tag": { - "commentStart": 2673, - "end": 2694, - "start": 2673, + "commentStart": 2655, + "end": 2676, + "start": 2655, "type": "TagDeclarator", "value": "rectangleSegmentC002" }, @@ -2146,9 +2146,9 @@ description: Variables in memory after executing enclosure.kcl 175.0 ], "tag": { - "commentStart": 2764, - "end": 2785, - "start": 2764, + "commentStart": 2746, + "end": 2767, + "start": 2746, "type": "TagDeclarator", "value": "rectangleSegmentD002" },