Accept idents as KW args (#6644)
Support kw arg/local variable shorthand Signed-off-by: Nick Cameron <nrc@ncameron.org>
This commit is contained in:
@ -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
|
||||
}
|
||||
|
||||
|
@ -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()
|
||||
|
@ -1311,10 +1311,15 @@ impl Node<CallExpressionKw> {
|
||||
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<CallExpressionKw> {
|
||||
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<CallExpressionKw> {
|
||||
));
|
||||
}
|
||||
|
||||
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<CallExpressionKw> {
|
||||
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"#;
|
||||
|
@ -186,7 +186,7 @@ impl<T> Node<T> {
|
||||
self.comment_start = start;
|
||||
}
|
||||
|
||||
pub fn map_ref<'a, U: 'a>(&'a self, f: fn(&'a T) -> U) -> Node<U> {
|
||||
pub fn map_ref<'a, U: 'a>(&'a self, f: impl Fn(&'a T) -> U) -> Node<U> {
|
||||
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<Node<&str>> {
|
||||
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
|
||||
}
|
||||
|
@ -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<Arg>,
|
||||
/// 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<String>, Arg)>,
|
||||
/// Labeled args.
|
||||
pub labeled: IndexMap<String, Arg>,
|
||||
pub errors: Vec<Arg>,
|
||||
@ -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())
|
||||
}
|
||||
|
@ -48,7 +48,7 @@ async fn call_map_closure(
|
||||
ctxt: &ExecutorContext,
|
||||
) -> Result<KclValue, KclError> {
|
||||
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(),
|
||||
};
|
||||
|
@ -424,7 +424,7 @@ async fn make_transform<T: GeometryTrait>(
|
||||
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(),
|
||||
};
|
||||
|
@ -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,
|
||||
|
@ -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"
|
||||
},
|
||||
|
Reference in New Issue
Block a user