[BUG] Expression parser fails with operators other than +/-* like roundTo()
freemansoft opened this issue · comments
ℹ️ Info
The expression parser does not handle some function calls or power operators.
Version: 0.2.0-alpha
current head of the main branch
💬 Description
The expression parser for math operations will return incorrect results for math functions on operations.
solved to `NaN` for {"value": roundTo({semantic.fontSize.base} / {semantic.fontSize.scale}, 0), "type": "fontSizes", "path": ".semantic.fontSize", "name": "sm", "variableName": "semanticFontSizeSm" }
solved to `0.0` for {"value": roundTo({semantic.fontSize.base} * {semantic.fontSize.scale}^7, 0), "type": "fontSizes", "path": ".semantic.fontSize", "name": "6xl", "variableName": "semanticFontSize6xl" }
where base and scale have values though the values really don't matter
"fontSize"
"base": {
"type": "fontSizes",
"value": "16"
},
"scale": {
"type": "fontSizes",
"value": "1.2"
},
📜 tokens file you tried to import
Example 2 in PR #4 demonstrates this. There extra logging in that PR
Can this be closed now that #4 is merged?
I'm pretty sure that function-based math operations are not implemented. The example in the PR had the roundTo(x,y) and ^ operations removed from the JSON.
Aah ok, I understand it better now. It's not a bug, but a missing feature. What type of token export generated these?
The current code fails silently I thin returning null for any clause that contains a function. This means you get a NaN if there is a division operator or a null if there is one of the other operators. The code should abort or log errors or something if it runs across an unsupported function.