diff options
| author | Joey Yakimowich-Payne <jyapayne@gmail.com> | 2020-04-17 06:53:41 -0600 |
|---|---|---|
| committer | Joey Yakimowich-Payne <jyapayne@gmail.com> | 2020-04-23 17:30:28 -0600 |
| commit | 305d90583e5dc7a8dde012c982047df9dee21f8e (patch) | |
| tree | cef24b922787b404282ae5ffe8bfd88f02f0f45f | |
| parent | c1520b4fd103da78c15c807092f7bcbb46d16012 (diff) | |
| download | nimterop-305d90583e5dc7a8dde012c982047df9dee21f8e.tar.gz nimterop-305d90583e5dc7a8dde012c982047df9dee21f8e.zip | |
Add proper binary casting
| -rw-r--r-- | nimterop/exprparser.nim | 28 |
1 files changed, 24 insertions, 4 deletions
diff --git a/nimterop/exprparser.nim b/nimterop/exprparser.nim index 9570788..1f72a9a 100644 --- a/nimterop/exprparser.nim +++ b/nimterop/exprparser.nim @@ -144,8 +144,18 @@ proc processShiftExpression*(exprParser: ExprParser, node: TSNode): PNode = else: raise newException(ExprParseError, &"Unsupported shift symbol \"{shiftSym}\"") - result.add exprParser.processTSNode(left) - result.add exprParser.processTSNode(right) + let + leftNode = exprParser.processTSNode(left) + rightNode = exprParser.processTSNode(right) + + result.add leftNode + result.add nkCast.newTree( + nkCall.newTree( + exprParser.state.getIdent("typeof"), + leftNode + ), + rightNode + ) proc processParenthesizedExpr*(exprParser: ExprParser, node: TSNode): PNode = result = newNode(nkPar) @@ -193,8 +203,18 @@ proc processBitwiseExpression*(exprParser: ExprParser, node: TSNode): PNode = raise newException(ExprParseError, &"Unsupported binary symbol \"{binarySym}\"") result.add exprParser.state.getIdent(nimSym) - result.add exprParser.processTSNode(left) - result.add exprParser.processTSNode(right) + let + leftNode = exprParser.processTSNode(left) + rightNode = exprParser.processTSNode(right) + + result.add leftNode + result.add nkCast.newTree( + nkCall.newTree( + exprParser.state.getIdent("typeof"), + leftNode + ), + rightNode + ) elif node.len() == 1: result = newNode(nkPar) |
