aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJoey Yakimowich-Payne <jyapayne@gmail.com>2020-04-23 21:52:34 -0600
committerJoey Yakimowich-Payne <jyapayne@gmail.com>2020-04-26 09:12:17 -0600
commit4e687dd80783e8ff7bca9ba8ba6ba61d3a933fc2 (patch)
tree85f578f9c2f14abbfde2f11aae99cdf9e12efa0e
parent3e28501826f5d655ad3797cbf29009082be126e1 (diff)
downloadnimterop-4e687dd80783e8ff7bca9ba8ba6ba61d3a933fc2.tar.gz
nimterop-4e687dd80783e8ff7bca9ba8ba6ba61d3a933fc2.zip
Don't support multiple base nodes yet
-rw-r--r--nimterop/exprparser.nim20
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":