diff --git a/CHANGELOG.md b/CHANGELOG.md
index 15437688..0bfa8736 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -4,6 +4,15 @@ All notable changes to this project will be documented in this file. See
[standard-version](https://github.com/conventional-changelog/standard-version)
for commit guidelines.
+
+## 0.21.2 (2018-06-27)
+
+### Bug fixes
+
+ * [core] Fix transpilation error caused by values bound to collapsed variadic node. (#1306)
+ * [nodes] Fix implementation of [`xod/math/clip`](https://xod.io/libs/xod/math/clip). (#1307)
+ * [core] Fix a very rare case where constant values could be overwritten. (#1308)
+
## 0.21.1 (2018-06-25)
diff --git a/lerna.json b/lerna.json
index ea3d67cd..d4551b6a 100644
--- a/lerna.json
+++ b/lerna.json
@@ -6,5 +6,5 @@
"packages": [
"packages/*"
],
- "version": "0.21.1"
+ "version": "0.21.2"
}
diff --git a/packages/xod-arduino-deploy/package.json b/packages/xod-arduino-deploy/package.json
index 9506af5e..26b111a0 100644
--- a/packages/xod-arduino-deploy/package.json
+++ b/packages/xod-arduino-deploy/package.json
@@ -1,6 +1,6 @@
{
"name": "xod-arduino-deploy",
- "version": "0.21.0",
+ "version": "0.21.2",
"description": "Utility to build and upload binaries on Arduino microcontrollers.",
"main": "dist/index.js",
"scripts": {
@@ -28,7 +28,7 @@
"serialport": "^4.0.7",
"tar": "^3.1.8",
"unbzip2-stream": "^1.2.5",
- "xod-fs": "^0.21.0",
+ "xod-fs": "^0.21.2",
"xod-func-tools": "^0.21.0"
},
"devDependencies": {
diff --git a/packages/xod-arduino/package.json b/packages/xod-arduino/package.json
index cdac41d5..871359fb 100644
--- a/packages/xod-arduino/package.json
+++ b/packages/xod-arduino/package.json
@@ -1,6 +1,6 @@
{
"name": "xod-arduino",
- "version": "0.21.1",
+ "version": "0.21.2",
"description": "XOD project: Arduino transpiler",
"scripts": {
"build:js": "babel src/ -d dist/ --source-maps",
@@ -26,11 +26,11 @@
"ramda-fantasy": "^0.8.0",
"sanctuary-def": "^0.14.0",
"xod-func-tools": "^0.21.0",
- "xod-project": "^0.21.0"
+ "xod-project": "^0.21.2"
},
"devDependencies": {
"babel-plugin-inline-import": "^2.0.4",
"chai": "^4.1.2",
- "xod-fs": "^0.21.0"
+ "xod-fs": "^0.21.2"
}
}
diff --git a/packages/xod-arduino/test/transpiler.spec.js b/packages/xod-arduino/test/transpiler.spec.js
index 99060d00..cbf4137f 100644
--- a/packages/xod-arduino/test/transpiler.spec.js
+++ b/packages/xod-arduino/test/transpiler.spec.js
@@ -70,8 +70,8 @@ describe('xod-arduino transpiler', () => {
);
assert.deepEqual(patchPaths, [
- 'xod/core/constant-number', // IVAL
'xod/core/constant-boolean', // EN
+ 'xod/core/constant-number', // IVAL
'xod/core/constant-port', // PORT
'xod/core/continuously', // UPD
'xod/core/clock',
diff --git a/packages/xod-cli/package.json b/packages/xod-cli/package.json
index 2d4abfad..b4b74a23 100644
--- a/packages/xod-cli/package.json
+++ b/packages/xod-cli/package.json
@@ -1,6 +1,6 @@
{
"name": "xod-cli",
- "version": "0.21.1",
+ "version": "0.21.2",
"description": "XOD project: Command Line Interface",
"scripts": {
"build:workspace": "cpx \"../../workspace/__lib__/**\" \"./__lib__\"",
@@ -28,11 +28,11 @@
"sanctuary-def": "^0.14.0",
"source-map-support": "^0.4.15",
"swagger-client": "^3.4.3",
- "xod-arduino": "^0.21.1",
- "xod-fs": "^0.21.0",
+ "xod-arduino": "^0.21.2",
+ "xod-fs": "^0.21.2",
"xod-func-tools": "^0.21.0",
- "xod-pm": "^0.21.1",
- "xod-project": "^0.21.0",
+ "xod-pm": "^0.21.2",
+ "xod-project": "^0.21.2",
"xod-tabtest": "^0.21.0"
},
"devDependencies": {
diff --git a/packages/xod-client-browser/package.json b/packages/xod-client-browser/package.json
index b9a7c496..38427698 100644
--- a/packages/xod-client-browser/package.json
+++ b/packages/xod-client-browser/package.json
@@ -1,6 +1,6 @@
{
"name": "xod-client-browser",
- "version": "0.21.1",
+ "version": "0.21.2",
"description": "XOD project: Client browser application",
"scripts": {
"build:tutorial-project": "node ./tools/loadTutorialProject.js",
@@ -23,16 +23,16 @@
"redux": "^3.0.5",
"redux-thunk": "^2.1.0",
"url-parse": "^1.2.0",
- "xod-arduino": "^0.21.1",
- "xod-client": "^0.21.1",
+ "xod-arduino": "^0.21.2",
+ "xod-client": "^0.21.2",
"xod-func-tools": "^0.21.0",
- "xod-project": "^0.21.0"
+ "xod-project": "^0.21.2"
},
"devDependencies": {
"chai": "^4.1.2",
"node-static": "^0.7.10",
"why-did-you-update": "^0.1.0",
- "xod-fs": "^0.21.0"
+ "xod-fs": "^0.21.2"
},
"author": "XOD Team ",
"license": "AGPL-3.0"
diff --git a/packages/xod-client-electron/package.json b/packages/xod-client-electron/package.json
index fde36de4..b130ccf0 100644
--- a/packages/xod-client-electron/package.json
+++ b/packages/xod-client-electron/package.json
@@ -5,7 +5,7 @@
"license": "AGPL-3.0",
"main": "src-babel/app/main.js",
"name": "xod-client-electron",
- "version": "0.21.1",
+ "version": "0.21.2",
"scripts": {
"build:workspace": "cpx \"../../workspace/**/*\" \"src-babel/workspace\"",
"build:gui": "webpack --colors",
@@ -41,13 +41,13 @@
"redux": "^3.0.5",
"redux-thunk": "^2.1.0",
"serialport": "^4.0.7",
- "xod-arduino": "^0.21.1",
- "xod-arduino-deploy": "^0.21.0",
- "xod-client": "^0.21.1",
- "xod-deploy": "^0.21.0",
- "xod-fs": "^0.21.0",
+ "xod-arduino": "^0.21.2",
+ "xod-arduino-deploy": "^0.21.2",
+ "xod-client": "^0.21.2",
+ "xod-deploy": "^0.21.2",
+ "xod-fs": "^0.21.2",
"xod-func-tools": "^0.21.0",
- "xod-project": "^0.21.0"
+ "xod-project": "^0.21.2"
},
"devDependencies": {
"babel-cli": "^6.16.0",
diff --git a/packages/xod-client/package.json b/packages/xod-client/package.json
index 8da8a3c3..f006c487 100644
--- a/packages/xod-client/package.json
+++ b/packages/xod-client/package.json
@@ -1,6 +1,6 @@
{
"name": "xod-client",
- "version": "0.21.1",
+ "version": "0.21.2",
"description": "XOD project: Client application",
"scripts": {
"build": "babel src/ -d dist/ --source-maps",
@@ -58,11 +58,11 @@
"url-parse": "^1.1.9",
"url-search-params-polyfill": "^2.0.1",
"vec-la-fp": "^1.5.2",
- "xod-arduino": "^0.21.1",
+ "xod-arduino": "^0.21.2",
"xod-func-tools": "^0.21.0",
- "xod-patch-search": "^0.21.0",
- "xod-pm": "^0.21.1",
- "xod-project": "^0.21.0"
+ "xod-patch-search": "^0.21.2",
+ "xod-pm": "^0.21.2",
+ "xod-project": "^0.21.2"
},
"devDependencies": {
"@storybook/addon-actions": "^3.2.17",
diff --git a/packages/xod-deploy/package.json b/packages/xod-deploy/package.json
index dbaf618f..0b8b7299 100644
--- a/packages/xod-deploy/package.json
+++ b/packages/xod-deploy/package.json
@@ -1,6 +1,6 @@
{
"name": "xod-deploy",
- "version": "0.21.0",
+ "version": "0.21.2",
"description": "",
"main": "dist/index.js",
"scripts": {
@@ -29,7 +29,7 @@
"tar": "^4.0.1",
"unbzip2-stream": "^1.2.5",
"ws": "^3.1.0",
- "xod-fs": "^0.21.0",
+ "xod-fs": "^0.21.2",
"xod-func-tools": "^0.21.0"
},
"devDependencies": {
diff --git a/packages/xod-fs/package.json b/packages/xod-fs/package.json
index 499541ac..eba8e49d 100644
--- a/packages/xod-fs/package.json
+++ b/packages/xod-fs/package.json
@@ -1,6 +1,6 @@
{
"name": "xod-fs",
- "version": "0.21.0",
+ "version": "0.21.2",
"description": "",
"main": "dist/index.js",
"scripts": {
@@ -19,7 +19,7 @@
"recursive-readdir": "^2.1.0",
"sanctuary-def": "^0.14.0",
"xod-func-tools": "^0.21.0",
- "xod-project": "^0.21.0"
+ "xod-project": "^0.21.2"
},
"devDependencies": {
"chai": "^4.1.2",
diff --git a/packages/xod-patch-search/package.json b/packages/xod-patch-search/package.json
index 85b4302f..ee896845 100644
--- a/packages/xod-patch-search/package.json
+++ b/packages/xod-patch-search/package.json
@@ -1,6 +1,6 @@
{
"name": "xod-patch-search",
- "version": "0.21.0",
+ "version": "0.21.2",
"description": "",
"main": "dist/index.js",
"scripts": {
@@ -23,10 +23,10 @@
"ramda": "^0.24.1",
"ramda-fantasy": "^0.8.0",
"xod-func-tools": "^0.21.0",
- "xod-project": "^0.21.0"
+ "xod-project": "^0.21.2"
},
"devDependencies": {
"chai": "^4.1.2",
- "xod-fs": "^0.21.0"
+ "xod-fs": "^0.21.2"
}
}
diff --git a/packages/xod-pm/package.json b/packages/xod-pm/package.json
index 102f9dbb..1f364401 100644
--- a/packages/xod-pm/package.json
+++ b/packages/xod-pm/package.json
@@ -1,6 +1,6 @@
{
"name": "xod-pm",
- "version": "0.21.1",
+ "version": "0.21.2",
"description": "",
"main": "dist/index.js",
"scripts": {
@@ -24,7 +24,7 @@
"ramda-fantasy": "^0.8.0",
"swagger-client": "^3.4.3",
"xod-func-tools": "^0.21.0",
- "xod-project": "^0.21.0"
+ "xod-project": "^0.21.2"
},
"devDependencies": {
"chai": "^4.1.2"
diff --git a/packages/xod-project/package.json b/packages/xod-project/package.json
index a3baedb2..c9cb215b 100644
--- a/packages/xod-project/package.json
+++ b/packages/xod-project/package.json
@@ -1,6 +1,6 @@
{
"name": "xod-project",
- "version": "0.21.0",
+ "version": "0.21.2",
"description": "API functions to work on XOD project state",
"keywords": [],
"license": "AGPL-3.0",
diff --git a/packages/xod-project/src/extractBoundInputsToConstNodes.js b/packages/xod-project/src/extractBoundInputsToConstNodes.js
index 930e02de..40ad0db7 100644
--- a/packages/xod-project/src/extractBoundInputsToConstNodes.js
+++ b/packages/xod-project/src/extractBoundInputsToConstNodes.js
@@ -59,7 +59,6 @@ const getNodePinValues = def(
// 'Never' is not extracted to a constant node.
// It literally menas "do nothing", so it's just ignored.
R.reject(R.equals(INPUT_PULSE_PIN_BINDING_OPTIONS.NEVER)),
- R.merge(Node.getAllBoundValues(node)),
R.map(Node.getBoundValueOrDefault(R.__, node)),
R.indexBy(Pin.getPinKey),
Patch.listPins,
diff --git a/packages/xod-project/src/flatten.js b/packages/xod-project/src/flatten.js
index 77a52566..970cbd3f 100644
--- a/packages/xod-project/src/flatten.js
+++ b/packages/xod-project/src/flatten.js
@@ -400,6 +400,18 @@ const getValueToBind = R.curry((nodesById, linksChain) => {
)(linksChain);
const topNode = R.last(outputNodesFromLinkChain);
+
+ // special case — top node is a constant
+ const topNodeIsConstant = R.compose(
+ PatchPathUtils.isConstantNodeType,
+ Node.getNodeType
+ )(topNode);
+ if (topNodeIsConstant) {
+ // no need to rebind anything — links chain can be safely collapsed,
+ // and value from constant node will freely propagate down
+ return Maybe.Nothing();
+ }
+
const isTopNodeTerminal = isInternalTerminalNode(topNode);
// Example:
diff --git a/packages/xod-project/test/fixtures/constant-propagation-through-bound-output.flat.xodball b/packages/xod-project/test/fixtures/constant-propagation-through-bound-output.flat.xodball
new file mode 100644
index 00000000..c57eb50d
--- /dev/null
+++ b/packages/xod-project/test/fixtures/constant-propagation-through-bound-output.flat.xodball
@@ -0,0 +1,139 @@
+{
+ "patches": {
+ "@/main": {
+ "nodes": {
+ "rkoe9Wgf7~SyO0tZeMX": {
+ "boundLiterals": {
+ "B1x2RV3eZ": "42"
+ },
+ "id": "rkoe9Wgf7~SyO0tZeMX",
+ "type": "xod/core/constant-number",
+ "position": {
+ "x": 68,
+ "y": 0
+ }
+ },
+ "Bk3g9Zlf7": {
+ "id": "Bk3g9Zlf7",
+ "type": "@/foo",
+ "position": {
+ "x": 68,
+ "y": 102
+ }
+ }
+ },
+ "links": {
+ "SkpxcWlMX": {
+ "id": "SkpxcWlMX",
+ "output": {
+ "nodeId": "rkoe9Wgf7~SyO0tZeMX",
+ "pinKey": "B1x2RV3eZ"
+ },
+ "input": {
+ "nodeId": "Bk3g9Zlf7",
+ "pinKey": "rJyl5Zgfm"
+ }
+ }
+ },
+ "path": "@/main"
+ },
+ "@/must-output-42": {
+ "links": {
+ "S1cAKWez7": {
+ "id": "S1cAKWez7",
+ "output": {
+ "nodeId": "SyO0tZeMX",
+ "pinKey": "B1x2RV3eZ"
+ },
+ "input": {
+ "nodeId": "BJYhtWgfX",
+ "pinKey": "__in__"
+ }
+ }
+ },
+ "nodes": {
+ "BJYhtWgfX": {
+ "boundLiterals": {
+ "__in__": "21"
+ },
+ "id": "BJYhtWgfX",
+ "type": "xod/patch-nodes/output-number",
+ "position": {
+ "x": 68,
+ "y": 204
+ }
+ },
+ "SyO0tZeMX": {
+ "boundLiterals": {
+ "B1x2RV3eZ": "42"
+ },
+ "id": "SyO0tZeMX",
+ "type": "xod/core/constant-number",
+ "position": {
+ "x": 68,
+ "y": 0
+ }
+ }
+ },
+ "path": "@/must-output-42"
+ },
+ "@/foo": {
+ "attachments": [
+ {
+ "filename": "patch.cpp",
+ "encoding": "utf-8",
+ "content": "\nstruct State {\n};\n\n{{ GENERATED_CODE }}\n\nvoid evaluate(Context ctx) {\n //auto inValue = getValue(ctx);\n //emitValue(ctx, inValue);\n}\n"
+ }
+ ],
+ "nodes": {
+ "rJyl5Zgfm": {
+ "id": "rJyl5Zgfm",
+ "type": "xod/patch-nodes/input-number",
+ "position": {
+ "x": 34,
+ "y": 0
+ }
+ },
+ "SJUgcWxz7": {
+ "id": "SJUgcWxz7",
+ "type": "xod/patch-nodes/not-implemented-in-xod",
+ "position": {
+ "x": 34,
+ "y": 102
+ }
+ }
+ },
+ "path": "@/foo"
+ },
+ "xod/core/constant-number": {
+ "attachments": [
+ {
+ "filename": "patch.cpp",
+ "encoding": "utf8",
+ "content": "struct State {};\n\n{{ GENERATED_CODE }}\n\nvoid evaluate(Context ctx) {\n}\n"
+ }
+ ],
+ "nodes": {
+ "B1x2RV3eZ": {
+ "label": "VAL",
+ "id": "B1x2RV3eZ",
+ "position": {
+ "x": 10,
+ "y": 120
+ },
+ "type": "xod/patch-nodes/output-number"
+ },
+ "H1PnRN2lW": {
+ "id": "H1PnRN2lW",
+ "position": {
+ "x": 10,
+ "y": 16
+ },
+ "type": "xod/patch-nodes/not-implemented-in-xod"
+ }
+ },
+ "path": "xod/core/constant-number"
+ }
+ },
+ "name": "constant-propagation-through-bound-output"
+}
\ No newline at end of file
diff --git a/packages/xod-project/test/fixtures/constant-propagation-through-bound-output.xodball b/packages/xod-project/test/fixtures/constant-propagation-through-bound-output.xodball
new file mode 100644
index 00000000..aee1af1c
--- /dev/null
+++ b/packages/xod-project/test/fixtures/constant-propagation-through-bound-output.xodball
@@ -0,0 +1,136 @@
+{
+ "patches": {
+ "@/main": {
+ "nodes": {
+ "rkoe9Wgf7": {
+ "id": "rkoe9Wgf7",
+ "type": "@/must-output-42",
+ "position": {
+ "x": 68,
+ "y": 0
+ }
+ },
+ "Bk3g9Zlf7": {
+ "id": "Bk3g9Zlf7",
+ "type": "@/foo",
+ "position": {
+ "x": 68,
+ "y": 102
+ }
+ }
+ },
+ "links": {
+ "SkpxcWlMX": {
+ "id": "SkpxcWlMX",
+ "output": {
+ "nodeId": "rkoe9Wgf7",
+ "pinKey": "BJYhtWgfX"
+ },
+ "input": {
+ "nodeId": "Bk3g9Zlf7",
+ "pinKey": "rJyl5Zgfm"
+ }
+ }
+ },
+ "path": "@/main"
+ },
+ "@/must-output-42": {
+ "nodes": {
+ "BJYhtWgfX": {
+ "id": "BJYhtWgfX",
+ "type": "xod/patch-nodes/output-number",
+ "position": {
+ "x": 68,
+ "y": 204
+ },
+ "boundLiterals": {
+ "__in__": "21"
+ }
+ },
+ "SyO0tZeMX": {
+ "id": "SyO0tZeMX",
+ "type": "xod/core/constant-number",
+ "position": {
+ "x": 68,
+ "y": 0
+ },
+ "boundLiterals": {
+ "B1x2RV3eZ": "42"
+ }
+ }
+ },
+ "links": {
+ "S1cAKWez7": {
+ "id": "S1cAKWez7",
+ "output": {
+ "nodeId": "SyO0tZeMX",
+ "pinKey": "B1x2RV3eZ"
+ },
+ "input": {
+ "nodeId": "BJYhtWgfX",
+ "pinKey": "__in__"
+ }
+ }
+ },
+ "path": "@/must-output-42"
+ },
+ "@/foo": {
+ "nodes": {
+ "rJyl5Zgfm": {
+ "id": "rJyl5Zgfm",
+ "type": "xod/patch-nodes/input-number",
+ "position": {
+ "x": 34,
+ "y": 0
+ }
+ },
+ "SJUgcWxz7": {
+ "id": "SJUgcWxz7",
+ "type": "xod/patch-nodes/not-implemented-in-xod",
+ "position": {
+ "x": 34,
+ "y": 102
+ }
+ }
+ },
+ "path": "@/foo",
+ "attachments": [
+ {
+ "filename": "patch.cpp",
+ "encoding": "utf-8",
+ "content": "\nstruct State {\n};\n\n{{ GENERATED_CODE }}\n\nvoid evaluate(Context ctx) {\n //auto inValue = getValue(ctx);\n //emitValue(ctx, inValue);\n}\n"
+ }
+ ]
+ },
+ "xod/core/constant-number": {
+ "nodes": {
+ "B1x2RV3eZ": {
+ "label": "VAL",
+ "id": "B1x2RV3eZ",
+ "position": {
+ "x": 10,
+ "y": 120
+ },
+ "type": "xod/patch-nodes/output-number"
+ },
+ "H1PnRN2lW": {
+ "id": "H1PnRN2lW",
+ "position": {
+ "x": 10,
+ "y": 16
+ },
+ "type": "xod/patch-nodes/not-implemented-in-xod"
+ }
+ },
+ "path": "xod/core/constant-number",
+ "attachments": [
+ {
+ "filename": "patch.cpp",
+ "encoding": "utf8",
+ "content": "struct State {};\n\n{{ GENERATED_CODE }}\n\nvoid evaluate(Context ctx) {\n}\n"
+ }
+ ]
+ }
+ },
+ "name": "constant-propagation-through-bound-output"
+}
\ No newline at end of file
diff --git a/packages/xod-project/test/flatten.spec.js b/packages/xod-project/test/flatten.spec.js
index fb08877c..c709b591 100644
--- a/packages/xod-project/test/flatten.spec.js
+++ b/packages/xod-project/test/flatten.spec.js
@@ -1781,6 +1781,19 @@ describe('Flatten', () => {
flatProject
);
});
+ it('should allow constant node values to propagate down', () => {
+ const inputProject = Helper.loadXodball(
+ './fixtures/constant-propagation-through-bound-output.xodball'
+ );
+ const expectedProject = Helper.loadXodball(
+ './fixtures/constant-propagation-through-bound-output.flat.xodball'
+ );
+ const flatProject = flatten(inputProject, '@/main');
+
+ Helper.expectEitherRight(project => {
+ assert.deepEqual(project, expectedProject);
+ }, flatProject);
+ });
});
describe('implementations', () => {
diff --git a/workspace/__lib__/xod/bits/project.xod b/workspace/__lib__/xod/bits/project.xod
index 7b7456a6..e5f957da 100644
--- a/workspace/__lib__/xod/bits/project.xod
+++ b/workspace/__lib__/xod/bits/project.xod
@@ -5,5 +5,5 @@
"description": "Low-level bits and bytes operations",
"license": "AGPL-3.0",
"name": "bits",
- "version": "0.21.1"
+ "version": "0.21.2"
}
diff --git a/workspace/__lib__/xod/common-hardware/project.xod b/workspace/__lib__/xod/common-hardware/project.xod
index 1c2cb7b8..baaf0b45 100644
--- a/workspace/__lib__/xod/common-hardware/project.xod
+++ b/workspace/__lib__/xod/common-hardware/project.xod
@@ -5,5 +5,5 @@
"description": "Hardware drivers for popular and simple peripherals",
"license": "AGPL-3.0",
"name": "common-hardware",
- "version": "0.21.1"
+ "version": "0.21.2"
}
diff --git a/workspace/__lib__/xod/core/project.xod b/workspace/__lib__/xod/core/project.xod
index dc9bb68c..a2796047 100644
--- a/workspace/__lib__/xod/core/project.xod
+++ b/workspace/__lib__/xod/core/project.xod
@@ -5,5 +5,5 @@
"description": "The very basic nodes of XOD",
"license": "AGPL-3.0",
"name": "core",
- "version": "0.21.1"
+ "version": "0.21.2"
}
diff --git a/workspace/__lib__/xod/gpio/project.xod b/workspace/__lib__/xod/gpio/project.xod
index 03c42b0f..41fa4784 100644
--- a/workspace/__lib__/xod/gpio/project.xod
+++ b/workspace/__lib__/xod/gpio/project.xod
@@ -5,5 +5,5 @@
"description": "Nodes of XOD to deal with GPIO (hardware pins)",
"license": "AGPL-3.0",
"name": "gpio",
- "version": "0.21.1"
+ "version": "0.21.2"
}
diff --git a/workspace/__lib__/xod/i2c/project.xod b/workspace/__lib__/xod/i2c/project.xod
index c142671e..2b663b3e 100644
--- a/workspace/__lib__/xod/i2c/project.xod
+++ b/workspace/__lib__/xod/i2c/project.xod
@@ -5,5 +5,5 @@
"description": "I²C (aka I2C, IIC, TWI) bus interfacing",
"license": "AGPL-3.0",
"name": "i2c",
- "version": "0.21.1"
+ "version": "0.21.2"
}
diff --git a/workspace/__lib__/xod/math/clip/patch.cpp b/workspace/__lib__/xod/math/clip/patch.cpp
index ed93d771..1ed7cc28 100644
--- a/workspace/__lib__/xod/math/clip/patch.cpp
+++ b/workspace/__lib__/xod/math/clip/patch.cpp
@@ -14,5 +14,5 @@ void evaluate(Context ctx) {
x > rMax ? rMax :
x < rMin ? rMin : x;
- emitValue(ctx, xc);
+ emitValue(ctx, xc);
}
diff --git a/workspace/__lib__/xod/math/project.xod b/workspace/__lib__/xod/math/project.xod
index 7a1969fc..9ad6fa2f 100644
--- a/workspace/__lib__/xod/math/project.xod
+++ b/workspace/__lib__/xod/math/project.xod
@@ -5,5 +5,5 @@
"description": "Nodes of XOD for basic mathematical operations",
"license": "AGPL-3.0",
"name": "math",
- "version": "0.21.1"
+ "version": "0.21.2"
}
diff --git a/workspace/__lib__/xod/units/project.xod b/workspace/__lib__/xod/units/project.xod
index eaa8e6be..a30da784 100644
--- a/workspace/__lib__/xod/units/project.xod
+++ b/workspace/__lib__/xod/units/project.xod
@@ -5,5 +5,5 @@
"description": "Units of measurement conversions",
"license": "AGPL-3.0",
"name": "units",
- "version": "0.21.1"
+ "version": "0.21.2"
}
diff --git a/workspace/blink/__fixtures__/arduino.cpp b/workspace/blink/__fixtures__/arduino.cpp
index 96dfebc2..e55336f7 100644
--- a/workspace/blink/__fixtures__/arduino.cpp
+++ b/workspace/blink/__fixtures__/arduino.cpp
@@ -1139,9 +1139,9 @@ namespace xod {
// Define/allocate persistent storages (state, timeout, output data) for all nodes
-constexpr Number node_0_output_VAL = 0.25;
+constexpr Logic node_0_output_VAL = true;
-constexpr Logic node_1_output_VAL = true;
+constexpr Number node_1_output_VAL = 0.25;
constexpr uint8_t node_2_output_VAL = 13;
@@ -1225,8 +1225,8 @@ void runTransaction() {
ctxObj._node = &node_4;
// copy data from upstream nodes into context
- ctxObj._input_EN = node_1_output_VAL;
- ctxObj._input_IVAL = node_0_output_VAL;
+ ctxObj._input_EN = node_0_output_VAL;
+ ctxObj._input_IVAL = node_1_output_VAL;
ctxObj._isInputDirty_RST = false;
ctxObj._isInputDirty_EN = g_isSettingUp;
diff --git a/workspace/count-with-feedback-loops/__fixtures__/arduino.cpp b/workspace/count-with-feedback-loops/__fixtures__/arduino.cpp
index 009ed54f..99a0774f 100644
--- a/workspace/count-with-feedback-loops/__fixtures__/arduino.cpp
+++ b/workspace/count-with-feedback-loops/__fixtures__/arduino.cpp
@@ -1543,15 +1543,15 @@ xod__core__cast_to_pulse__boolean::Node node_0 = {
true // node itself dirty
};
-constexpr uint8_t node_1_output_VAL = 10;
+constexpr uint8_t node_1_output_VAL = 8;
-constexpr uint8_t node_2_output_VAL = 12;
+constexpr uint8_t node_2_output_VAL = 9;
-constexpr uint8_t node_3_output_VAL = 11;
+constexpr uint8_t node_3_output_VAL = 10;
-constexpr uint8_t node_4_output_VAL = 9;
+constexpr uint8_t node_4_output_VAL = 11;
-constexpr uint8_t node_5_output_VAL = 8;
+constexpr uint8_t node_5_output_VAL = 12;
constexpr uint8_t node_6_output_VAL = 13;
@@ -1566,9 +1566,9 @@ xod__core__continuously::Node node_8 = {
true // node itself dirty
};
-constexpr Number node_9_output_VAL = 1;
+constexpr Logic node_9_output_VAL = true;
-constexpr Logic node_10_output_VAL = true;
+constexpr Number node_10_output_VAL = 1;
constexpr Number node_11_output_VAL = 1;
@@ -1701,8 +1701,8 @@ void runTransaction() {
ctxObj._node = &node_13;
// copy data from upstream nodes into context
- ctxObj._input_EN = node_10_output_VAL;
- ctxObj._input_IVAL = node_9_output_VAL;
+ ctxObj._input_EN = node_9_output_VAL;
+ ctxObj._input_IVAL = node_10_output_VAL;
ctxObj._isInputDirty_RST = false;
ctxObj._isInputDirty_EN = g_isSettingUp;
@@ -1780,11 +1780,11 @@ void runTransaction() {
ctxObj._node = &node_17;
// copy data from upstream nodes into context
- ctxObj._input_RS = node_5_output_VAL;
- ctxObj._input_EN = node_4_output_VAL;
- ctxObj._input_D4 = node_1_output_VAL;
- ctxObj._input_D5 = node_3_output_VAL;
- ctxObj._input_D6 = node_2_output_VAL;
+ ctxObj._input_RS = node_1_output_VAL;
+ ctxObj._input_EN = node_2_output_VAL;
+ ctxObj._input_D4 = node_3_output_VAL;
+ ctxObj._input_D5 = node_4_output_VAL;
+ ctxObj._input_D6 = node_5_output_VAL;
ctxObj._input_D7 = node_6_output_VAL;
ctxObj._input_L1 = node_16.output_OUT;
ctxObj._input_L2 = node_7_output_VAL;
diff --git a/workspace/lcd-time/__fixtures__/arduino.cpp b/workspace/lcd-time/__fixtures__/arduino.cpp
index 1478fc2c..e39ed05e 100644
--- a/workspace/lcd-time/__fixtures__/arduino.cpp
+++ b/workspace/lcd-time/__fixtures__/arduino.cpp
@@ -1117,15 +1117,15 @@ namespace xod {
// Define/allocate persistent storages (state, timeout, output data) for all nodes
-constexpr uint8_t node_0_output_VAL = 10;
+constexpr uint8_t node_0_output_VAL = 8;
-constexpr uint8_t node_1_output_VAL = 12;
+constexpr uint8_t node_1_output_VAL = 9;
-constexpr uint8_t node_2_output_VAL = 11;
+constexpr uint8_t node_2_output_VAL = 10;
-constexpr uint8_t node_3_output_VAL = 9;
+constexpr uint8_t node_3_output_VAL = 11;
-constexpr uint8_t node_4_output_VAL = 8;
+constexpr uint8_t node_4_output_VAL = 12;
constexpr uint8_t node_5_output_VAL = 13;
@@ -1241,11 +1241,11 @@ void runTransaction() {
ctxObj._node = &node_10;
// copy data from upstream nodes into context
- ctxObj._input_RS = node_4_output_VAL;
- ctxObj._input_EN = node_3_output_VAL;
- ctxObj._input_D4 = node_0_output_VAL;
- ctxObj._input_D5 = node_2_output_VAL;
- ctxObj._input_D6 = node_1_output_VAL;
+ ctxObj._input_RS = node_0_output_VAL;
+ ctxObj._input_EN = node_1_output_VAL;
+ ctxObj._input_D4 = node_2_output_VAL;
+ ctxObj._input_D5 = node_3_output_VAL;
+ ctxObj._input_D6 = node_4_output_VAL;
ctxObj._input_D7 = node_5_output_VAL;
ctxObj._input_L1 = node_9.output_OUT;
ctxObj._input_L2 = node_6_output_VAL;