diff options
| author | Joey Yakimowich-Payne <jyapayne@gmail.com> | 2020-04-23 21:52:34 -0600 |
|---|---|---|
| committer | Joey Yakimowich-Payne <jyapayne@gmail.com> | 2020-04-26 09:12:17 -0600 |
| commit | 4e687dd80783e8ff7bca9ba8ba6ba61d3a933fc2 (patch) | |
| tree | 85f578f9c2f14abbfde2f11aae99cdf9e12efa0e | |
| parent | 3e28501826f5d655ad3797cbf29009082be126e1 (diff) | |
| download | nimterop-4e687dd80783e8ff7bca9ba8ba6ba61d3a933fc2.tar.gz nimterop-4e687dd80783e8ff7bca9ba8ba6ba61d3a933fc2.zip | |
Don't support multiple base nodes yet
| -rw-r--r-- | nimterop/exprparser.nim | 20 |
1 files changed, 10 insertions, 10 deletions
diff --git a/nimterop/exprparser.nim b/nimterop/exprparser.nim index e9ee502..c74f0b6 100644 --- a/nimterop/exprparser.nim +++ b/nimterop/exprparser.nim @@ -486,17 +486,17 @@ proc processTSNode(gState: State, node: TSNode, typeofNode: var PNode): PNode = if node.len == 1: result = gState.processTSNode(node[0], typeofNode) elif node.len > 1: - let res = newNode(nkStmtListExpr) + var nodes: seq[PNode] for i in 0 ..< node.len: - let node = gState.processTSNode(node[i], typeofNode) - if node.kind != nkNone: - res.add node - if res.len == 1: - result = res[0] - elif res.len > 1: - result = res - else: - result = newNode(nkNone) + let subNode = gState.processTSNode(node[i], typeofNode) + if subNode.kind != nkNone: + nodes.add(subNode) + # Multiple nodes can get tricky. Don't support them yet, unless they + # have at most one valid node + if nodes.len > 1: + raise newException(ExprParseError, &"Node type \"{nodeName}\" with val ({node.val}) has more than one non empty node") + if nodes.len == 1: + result = nodes[0] else: raise newException(ExprParseError, &"Node type \"{nodeName}\" has no children") of "parenthesized_expression": |
