--- source: kcl-lib/src/simulation_tests.rs description: Result of parsing cpu-cooler.kcl --- { "Ok": { "body": [ { "commentStart": 0, "end": 0, "moduleId": 0, "path": { "type": "Kcl", "filename": "parameters.kcl" }, "preComments": [ "// Import all parts and parameters into assembly file" ], "selector": { "commentStart": 0, "end": 0, "moduleId": 0, "start": 0, "type": "Glob" }, "start": 0, "type": "ImportStatement", "type": "ImportStatement" }, { "commentStart": 0, "end": 0, "moduleId": 0, "path": { "type": "Kcl", "filename": "fan-housing.kcl" }, "selector": { "type": "None", "alias": { "commentStart": 0, "end": 0, "moduleId": 0, "name": "fanHousing", "start": 0, "type": "Identifier" } }, "start": 0, "type": "ImportStatement", "type": "ImportStatement" }, { "commentStart": 0, "end": 0, "moduleId": 0, "path": { "type": "Kcl", "filename": "motor.kcl" }, "selector": { "type": "None", "alias": { "commentStart": 0, "end": 0, "moduleId": 0, "name": "motor", "start": 0, "type": "Identifier" } }, "start": 0, "type": "ImportStatement", "type": "ImportStatement" }, { "commentStart": 0, "end": 0, "moduleId": 0, "path": { "type": "Kcl", "filename": "fan.kcl" }, "selector": { "type": "None", "alias": { "commentStart": 0, "end": 0, "moduleId": 0, "name": "fan", "start": 0, "type": "Identifier" } }, "start": 0, "type": "ImportStatement", "type": "ImportStatement" }, { "commentStart": 0, "end": 0, "moduleId": 0, "path": { "type": "Kcl", "filename": "heat-sink.kcl" }, "selector": { "type": "None", "alias": { "commentStart": 0, "end": 0, "moduleId": 0, "name": "heatSink", "start": 0, "type": "Identifier" } }, "start": 0, "type": "ImportStatement", "type": "ImportStatement" }, { "commentStart": 0, "end": 0, "moduleId": 0, "path": { "type": "Kcl", "filename": "mounting-wire.kcl" }, "selector": { "type": "None", "alias": { "commentStart": 0, "end": 0, "moduleId": 0, "name": "mountingWire", "start": 0, "type": "Identifier" } }, "start": 0, "type": "ImportStatement", "type": "ImportStatement" }, { "commentStart": 0, "end": 0, "moduleId": 0, "path": { "type": "Kcl", "filename": "removable-sticker.kcl" }, "selector": { "type": "None", "alias": { "commentStart": 0, "end": 0, "moduleId": 0, "name": "removableSticker", "start": 0, "type": "Identifier" } }, "start": 0, "type": "ImportStatement", "type": "ImportStatement" }, { "commentStart": 0, "end": 0, "expression": { "abs_path": false, "commentStart": 0, "end": 0, "moduleId": 0, "name": { "commentStart": 0, "end": 0, "moduleId": 0, "name": "heatSink", "start": 0, "type": "Identifier" }, "path": [], "start": 0, "type": "Name", "type": "Name" }, "moduleId": 0, "preComments": [ "", "", "// Produce the model for each imported part" ], "start": 0, "type": "ExpressionStatement", "type": "ExpressionStatement" }, { "commentStart": 0, "declaration": { "commentStart": 0, "end": 0, "id": { "commentStart": 0, "end": 0, "moduleId": 0, "name": "translatePart", "start": 0, "type": "Identifier" }, "init": { "body": { "body": [ { "commentStart": 0, "end": 0, "expression": { "body": [ { "abs_path": false, "commentStart": 0, "end": 0, "moduleId": 0, "name": { "commentStart": 0, "end": 0, "moduleId": 0, "name": "part", "start": 0, "type": "Identifier" }, "path": [], "start": 0, "type": "Name", "type": "Name" }, { "arguments": [ { "type": "LabeledArg", "label": { "commentStart": 0, "end": 0, "moduleId": 0, "name": "x", "start": 0, "type": "Identifier" }, "arg": { "commentStart": 0, "end": 0, "left": { "abs_path": false, "commentStart": 0, "end": 0, "moduleId": 0, "name": { "commentStart": 0, "end": 0, "moduleId": 0, "name": "heatSinkDepth", "start": 0, "type": "Identifier" }, "path": [], "start": 0, "type": "Name", "type": "Name" }, "moduleId": 0, "operator": "/", "right": { "commentStart": 0, "end": 0, "moduleId": 0, "raw": "2", "start": 0, "type": "Literal", "type": "Literal", "value": { "value": 2.0, "suffix": "None" } }, "start": 0, "type": "BinaryExpression", "type": "BinaryExpression" } }, { "type": "LabeledArg", "label": { "commentStart": 0, "end": 0, "moduleId": 0, "name": "z", "start": 0, "type": "Identifier" }, "arg": { "commentStart": 0, "end": 0, "left": { "commentStart": 0, "end": 0, "moduleId": 0, "raw": "40", "start": 0, "type": "Literal", "type": "Literal", "value": { "value": 40.0, "suffix": "None" } }, "moduleId": 0, "operator": "+", "right": { "commentStart": 0, "end": 0, "left": { "abs_path": false, "commentStart": 0, "end": 0, "moduleId": 0, "name": { "commentStart": 0, "end": 0, "moduleId": 0, "name": "fanSize", "start": 0, "type": "Identifier" }, "path": [], "start": 0, "type": "Name", "type": "Name" }, "moduleId": 0, "operator": "/", "right": { "commentStart": 0, "end": 0, "moduleId": 0, "raw": "2", "start": 0, "type": "Literal", "type": "Literal", "value": { "value": 2.0, "suffix": "None" } }, "start": 0, "type": "BinaryExpression", "type": "BinaryExpression" }, "start": 0, "type": "BinaryExpression", "type": "BinaryExpression" } } ], "callee": { "abs_path": false, "commentStart": 0, "end": 0, "moduleId": 0, "name": { "commentStart": 0, "end": 0, "moduleId": 0, "name": "translate", "start": 0, "type": "Identifier" }, "path": [], "start": 0, "type": "Name" }, "commentStart": 0, "end": 0, "moduleId": 0, "start": 0, "type": "CallExpressionKw", "type": "CallExpressionKw", "unlabeled": null }, { "arguments": [ { "type": "LabeledArg", "label": { "commentStart": 0, "end": 0, "moduleId": 0, "name": "instances", "start": 0, "type": "Identifier" }, "arg": { "commentStart": 0, "end": 0, "moduleId": 0, "raw": "2", "start": 0, "type": "Literal", "type": "Literal", "value": { "value": 2.0, "suffix": "None" } } }, { "type": "LabeledArg", "label": { "commentStart": 0, "end": 0, "moduleId": 0, "name": "distance", "start": 0, "type": "Identifier" }, "arg": { "commentStart": 0, "end": 0, "left": { "abs_path": false, "commentStart": 0, "end": 0, "moduleId": 0, "name": { "commentStart": 0, "end": 0, "moduleId": 0, "name": "heatSinkDepth", "start": 0, "type": "Identifier" }, "path": [], "start": 0, "type": "Name", "type": "Name" }, "moduleId": 0, "operator": "+", "right": { "abs_path": false, "commentStart": 0, "end": 0, "moduleId": 0, "name": { "commentStart": 0, "end": 0, "moduleId": 0, "name": "fanHeight", "start": 0, "type": "Identifier" }, "path": [], "start": 0, "type": "Name", "type": "Name" }, "start": 0, "type": "BinaryExpression", "type": "BinaryExpression" } }, { "type": "LabeledArg", "label": { "commentStart": 0, "end": 0, "moduleId": 0, "name": "axis", "start": 0, "type": "Identifier" }, "arg": { "commentStart": 0, "elements": [ { "argument": { "commentStart": 0, "end": 0, "moduleId": 0, "raw": "1", "start": 0, "type": "Literal", "type": "Literal", "value": { "value": 1.0, "suffix": "None" } }, "commentStart": 0, "end": 0, "moduleId": 0, "operator": "-", "start": 0, "type": "UnaryExpression", "type": "UnaryExpression" }, { "commentStart": 0, "end": 0, "moduleId": 0, "raw": "0", "start": 0, "type": "Literal", "type": "Literal", "value": { "value": 0.0, "suffix": "None" } }, { "commentStart": 0, "end": 0, "moduleId": 0, "raw": "0", "start": 0, "type": "Literal", "type": "Literal", "value": { "value": 0.0, "suffix": "None" } } ], "end": 0, "moduleId": 0, "start": 0, "type": "ArrayExpression", "type": "ArrayExpression" } } ], "callee": { "abs_path": false, "commentStart": 0, "end": 0, "moduleId": 0, "name": { "commentStart": 0, "end": 0, "moduleId": 0, "name": "patternLinear3d", "start": 0, "type": "Identifier" }, "path": [], "start": 0, "type": "Name" }, "commentStart": 0, "end": 0, "moduleId": 0, "start": 0, "type": "CallExpressionKw", "type": "CallExpressionKw", "unlabeled": { "commentStart": 0, "end": 0, "moduleId": 0, "start": 0, "type": "PipeSubstitution", "type": "PipeSubstitution" } } ], "commentStart": 0, "end": 0, "moduleId": 0, "start": 0, "type": "PipeExpression", "type": "PipeExpression" }, "moduleId": 0, "start": 0, "type": "ExpressionStatement", "type": "ExpressionStatement" }, { "argument": { "commentStart": 0, "end": 0, "moduleId": 0, "properties": [], "start": 0, "type": "ObjectExpression", "type": "ObjectExpression" }, "commentStart": 0, "end": 0, "moduleId": 0, "start": 0, "type": "ReturnStatement", "type": "ReturnStatement" } ], "commentStart": 0, "end": 0, "moduleId": 0, "start": 0 }, "commentStart": 0, "end": 0, "moduleId": 0, "params": [ { "type": "Parameter", "identifier": { "commentStart": 0, "end": 0, "moduleId": 0, "name": "part", "start": 0, "type": "Identifier" } } ], "start": 0, "type": "FunctionExpression", "type": "FunctionExpression" }, "moduleId": 0, "start": 0, "type": "VariableDeclarator" }, "end": 0, "kind": "fn", "moduleId": 0, "start": 0, "type": "VariableDeclaration", "type": "VariableDeclaration" }, { "commentStart": 0, "end": 0, "expression": { "arguments": [ { "type": "LabeledArg", "label": { "commentStart": 0, "end": 0, "moduleId": 0, "name": "part", "start": 0, "type": "Identifier" }, "arg": { "abs_path": false, "commentStart": 0, "end": 0, "moduleId": 0, "name": { "commentStart": 0, "end": 0, "moduleId": 0, "name": "fanHousing", "start": 0, "type": "Identifier" }, "path": [], "start": 0, "type": "Name", "type": "Name" } } ], "callee": { "abs_path": false, "commentStart": 0, "end": 0, "moduleId": 0, "name": { "commentStart": 0, "end": 0, "moduleId": 0, "name": "translatePart", "start": 0, "type": "Identifier" }, "path": [], "start": 0, "type": "Name" }, "commentStart": 0, "end": 0, "moduleId": 0, "start": 0, "type": "CallExpressionKw", "type": "CallExpressionKw", "unlabeled": null }, "moduleId": 0, "start": 0, "type": "ExpressionStatement", "type": "ExpressionStatement" }, { "commentStart": 0, "end": 0, "expression": { "arguments": [ { "type": "LabeledArg", "label": { "commentStart": 0, "end": 0, "moduleId": 0, "name": "part", "start": 0, "type": "Identifier" }, "arg": { "abs_path": false, "commentStart": 0, "end": 0, "moduleId": 0, "name": { "commentStart": 0, "end": 0, "moduleId": 0, "name": "motor", "start": 0, "type": "Identifier" }, "path": [], "start": 0, "type": "Name", "type": "Name" } } ], "callee": { "abs_path": false, "commentStart": 0, "end": 0, "moduleId": 0, "name": { "commentStart": 0, "end": 0, "moduleId": 0, "name": "translatePart", "start": 0, "type": "Identifier" }, "path": [], "start": 0, "type": "Name" }, "commentStart": 0, "end": 0, "moduleId": 0, "start": 0, "type": "CallExpressionKw", "type": "CallExpressionKw", "unlabeled": null }, "moduleId": 0, "start": 0, "type": "ExpressionStatement", "type": "ExpressionStatement" }, { "commentStart": 0, "end": 0, "expression": { "arguments": [ { "type": "LabeledArg", "label": { "commentStart": 0, "end": 0, "moduleId": 0, "name": "part", "start": 0, "type": "Identifier" }, "arg": { "abs_path": false, "commentStart": 0, "end": 0, "moduleId": 0, "name": { "commentStart": 0, "end": 0, "moduleId": 0, "name": "fan", "start": 0, "type": "Identifier" }, "path": [], "start": 0, "type": "Name", "type": "Name" } } ], "callee": { "abs_path": false, "commentStart": 0, "end": 0, "moduleId": 0, "name": { "commentStart": 0, "end": 0, "moduleId": 0, "name": "translatePart", "start": 0, "type": "Identifier" }, "path": [], "start": 0, "type": "Name" }, "commentStart": 0, "end": 0, "moduleId": 0, "start": 0, "type": "CallExpressionKw", "type": "CallExpressionKw", "unlabeled": null }, "moduleId": 0, "start": 0, "type": "ExpressionStatement", "type": "ExpressionStatement" }, { "commentStart": 0, "end": 0, "expression": { "body": [ { "abs_path": false, "commentStart": 0, "end": 0, "moduleId": 0, "name": { "commentStart": 0, "end": 0, "moduleId": 0, "name": "mountingWire", "start": 0, "type": "Identifier" }, "path": [], "start": 0, "type": "Name", "type": "Name" }, { "arguments": [ { "type": "LabeledArg", "label": { "commentStart": 0, "end": 0, "moduleId": 0, "name": "instances", "start": 0, "type": "Identifier" }, "arg": { "commentStart": 0, "end": 0, "moduleId": 0, "raw": "2", "start": 0, "type": "Literal", "type": "Literal", "value": { "value": 2.0, "suffix": "None" } } }, { "type": "LabeledArg", "label": { "commentStart": 0, "end": 0, "moduleId": 0, "name": "axis", "start": 0, "type": "Identifier" }, "arg": { "commentStart": 0, "elements": [ { "commentStart": 0, "end": 0, "moduleId": 0, "raw": "0", "start": 0, "type": "Literal", "type": "Literal", "value": { "value": 0.0, "suffix": "None" } }, { "commentStart": 0, "end": 0, "moduleId": 0, "raw": "1", "start": 0, "type": "Literal", "type": "Literal", "value": { "value": 1.0, "suffix": "None" } }, { "commentStart": 0, "end": 0, "moduleId": 0, "raw": "0", "start": 0, "type": "Literal", "type": "Literal", "value": { "value": 0.0, "suffix": "None" } } ], "end": 0, "moduleId": 0, "start": 0, "type": "ArrayExpression", "type": "ArrayExpression" } }, { "type": "LabeledArg", "label": { "commentStart": 0, "end": 0, "moduleId": 0, "name": "center", "start": 0, "type": "Identifier" }, "arg": { "commentStart": 0, "elements": [ { "commentStart": 0, "end": 0, "moduleId": 0, "raw": "0", "start": 0, "type": "Literal", "type": "Literal", "value": { "value": 0.0, "suffix": "None" } }, { "commentStart": 0, "end": 0, "moduleId": 0, "raw": "0", "start": 0, "type": "Literal", "type": "Literal", "value": { "value": 0.0, "suffix": "None" } }, { "commentStart": 0, "end": 0, "left": { "commentStart": 0, "end": 0, "moduleId": 0, "raw": "40", "start": 0, "type": "Literal", "type": "Literal", "value": { "value": 40.0, "suffix": "None" } }, "moduleId": 0, "operator": "+", "right": { "commentStart": 0, "end": 0, "left": { "abs_path": false, "commentStart": 0, "end": 0, "moduleId": 0, "name": { "commentStart": 0, "end": 0, "moduleId": 0, "name": "fanSize", "start": 0, "type": "Identifier" }, "path": [], "start": 0, "type": "Name", "type": "Name" }, "moduleId": 0, "operator": "/", "right": { "commentStart": 0, "end": 0, "moduleId": 0, "raw": "2", "start": 0, "type": "Literal", "type": "Literal", "value": { "value": 2.0, "suffix": "None" } }, "start": 0, "type": "BinaryExpression", "type": "BinaryExpression" }, "start": 0, "type": "BinaryExpression", "type": "BinaryExpression" } ], "end": 0, "moduleId": 0, "start": 0, "type": "ArrayExpression", "type": "ArrayExpression" } }, { "type": "LabeledArg", "label": { "commentStart": 0, "end": 0, "moduleId": 0, "name": "arcDegrees", "start": 0, "type": "Identifier" }, "arg": { "commentStart": 0, "end": 0, "moduleId": 0, "raw": "360", "start": 0, "type": "Literal", "type": "Literal", "value": { "value": 360.0, "suffix": "None" } } }, { "type": "LabeledArg", "label": { "commentStart": 0, "end": 0, "moduleId": 0, "name": "rotateDuplicates", "start": 0, "type": "Identifier" }, "arg": { "commentStart": 0, "end": 0, "moduleId": 0, "raw": "true", "start": 0, "type": "Literal", "type": "Literal", "value": true } } ], "callee": { "abs_path": false, "commentStart": 0, "end": 0, "moduleId": 0, "name": { "commentStart": 0, "end": 0, "moduleId": 0, "name": "patternCircular3d", "start": 0, "type": "Identifier" }, "path": [], "start": 0, "type": "Name" }, "commentStart": 0, "end": 0, "moduleId": 0, "start": 0, "type": "CallExpressionKw", "type": "CallExpressionKw", "unlabeled": { "commentStart": 0, "end": 0, "moduleId": 0, "start": 0, "type": "PipeSubstitution", "type": "PipeSubstitution" } }, { "arguments": [ { "type": "LabeledArg", "label": { "commentStart": 0, "end": 0, "moduleId": 0, "name": "instances", "start": 0, "type": "Identifier" }, "arg": { "commentStart": 0, "end": 0, "moduleId": 0, "raw": "2", "start": 0, "type": "Literal", "type": "Literal", "value": { "value": 2.0, "suffix": "None" } } }, { "type": "LabeledArg", "label": { "commentStart": 0, "end": 0, "moduleId": 0, "name": "axis", "start": 0, "type": "Identifier" }, "arg": { "commentStart": 0, "elements": [ { "commentStart": 0, "end": 0, "moduleId": 0, "raw": "0", "start": 0, "type": "Literal", "type": "Literal", "value": { "value": 0.0, "suffix": "None" } }, { "commentStart": 0, "end": 0, "moduleId": 0, "raw": "0", "start": 0, "type": "Literal", "type": "Literal", "value": { "value": 0.0, "suffix": "None" } }, { "commentStart": 0, "end": 0, "moduleId": 0, "raw": "1", "start": 0, "type": "Literal", "type": "Literal", "value": { "value": 1.0, "suffix": "None" } } ], "end": 0, "moduleId": 0, "start": 0, "type": "ArrayExpression", "type": "ArrayExpression" } }, { "type": "LabeledArg", "label": { "commentStart": 0, "end": 0, "moduleId": 0, "name": "center", "start": 0, "type": "Identifier" }, "arg": { "commentStart": 0, "elements": [ { "commentStart": 0, "end": 0, "moduleId": 0, "raw": "0", "start": 0, "type": "Literal", "type": "Literal", "value": { "value": 0.0, "suffix": "None" } }, { "commentStart": 0, "end": 0, "moduleId": 0, "raw": "0", "start": 0, "type": "Literal", "type": "Literal", "value": { "value": 0.0, "suffix": "None" } }, { "commentStart": 0, "end": 0, "moduleId": 0, "raw": "0", "start": 0, "type": "Literal", "type": "Literal", "value": { "value": 0.0, "suffix": "None" } } ], "end": 0, "moduleId": 0, "start": 0, "type": "ArrayExpression", "type": "ArrayExpression" } }, { "type": "LabeledArg", "label": { "commentStart": 0, "end": 0, "moduleId": 0, "name": "arcDegrees", "start": 0, "type": "Identifier" }, "arg": { "commentStart": 0, "end": 0, "moduleId": 0, "raw": "360", "start": 0, "type": "Literal", "type": "Literal", "value": { "value": 360.0, "suffix": "None" } } }, { "type": "LabeledArg", "label": { "commentStart": 0, "end": 0, "moduleId": 0, "name": "rotateDuplicates", "start": 0, "type": "Identifier" }, "arg": { "commentStart": 0, "end": 0, "moduleId": 0, "raw": "true", "start": 0, "type": "Literal", "type": "Literal", "value": true } } ], "callee": { "abs_path": false, "commentStart": 0, "end": 0, "moduleId": 0, "name": { "commentStart": 0, "end": 0, "moduleId": 0, "name": "patternCircular3d", "start": 0, "type": "Identifier" }, "path": [], "start": 0, "type": "Name" }, "commentStart": 0, "end": 0, "moduleId": 0, "start": 0, "type": "CallExpressionKw", "type": "CallExpressionKw", "unlabeled": { "commentStart": 0, "end": 0, "moduleId": 0, "start": 0, "type": "PipeSubstitution", "type": "PipeSubstitution" } } ], "commentStart": 0, "end": 0, "moduleId": 0, "start": 0, "type": "PipeExpression", "type": "PipeExpression" }, "moduleId": 0, "start": 0, "type": "ExpressionStatement", "type": "ExpressionStatement" }, { "commentStart": 0, "end": 0, "expression": { "abs_path": false, "commentStart": 0, "end": 0, "moduleId": 0, "name": { "commentStart": 0, "end": 0, "moduleId": 0, "name": "removableSticker", "start": 0, "type": "Identifier" }, "path": [], "start": 0, "type": "Name", "type": "Name" }, "moduleId": 0, "start": 0, "type": "ExpressionStatement", "type": "ExpressionStatement" } ], "commentStart": 0, "end": 0, "innerAttrs": [ { "commentStart": 0, "end": 0, "moduleId": 0, "name": { "commentStart": 0, "end": 0, "moduleId": 0, "name": "settings", "start": 0, "type": "Identifier" }, "preComments": [ "// CPU Cooler", "// A CPU cooler is a device designed to dissipate heat generated by the CPU of a computer. They consist of a brazed heat sink made from aluminum or copper alloys, and one or two axial fans to move airflow across the heat sink.", "", "", "// Set units" ], "properties": [ { "commentStart": 0, "end": 0, "key": { "commentStart": 0, "end": 0, "moduleId": 0, "name": "defaultLengthUnit", "start": 0, "type": "Identifier" }, "moduleId": 0, "start": 0, "type": "ObjectProperty", "value": { "abs_path": false, "commentStart": 0, "end": 0, "moduleId": 0, "name": { "commentStart": 0, "end": 0, "moduleId": 0, "name": "mm", "start": 0, "type": "Identifier" }, "path": [], "start": 0, "type": "Name", "type": "Name" } } ], "start": 0, "type": "Annotation" } ], "moduleId": 0, "nonCodeMeta": { "nonCodeNodes": { "7": [ { "commentStart": 0, "end": 0, "moduleId": 0, "start": 0, "type": "NonCodeNode", "value": { "type": "newLine" } } ], "11": [ { "commentStart": 0, "end": 0, "moduleId": 0, "start": 0, "type": "NonCodeNode", "value": { "type": "newLine" } } ] }, "startNodes": [ { "commentStart": 0, "end": 0, "moduleId": 0, "start": 0, "type": "NonCodeNode", "value": { "type": "newLine" } } ] }, "start": 0 } }